C++ 插入排序不起作用的quicks排序代码
所以我尝试使用插入排序和快速排序来加速它,但它不起作用的原因我不明白。在添加插入排序部分之前,排序操作正确C++ 插入排序不起作用的quicks排序代码,c++,algorithm,sorting,optimization,C++,Algorithm,Sorting,Optimization,所以我尝试使用插入排序和快速排序来加速它,但它不起作用的原因我不明白。在添加插入排序部分之前,排序操作正确 void QuickSort(int data[], int p, int r) { if (p < r) { if (r - p < 10) { InsertionSort(data, p, r); return; } int pivotIndex = Part
void QuickSort(int data[], int p, int r)
{
if (p < r)
{
if (r - p < 10)
{
InsertionSort(data, p, r);
return;
}
int pivotIndex = Partition(data, p, r);
QuickSort(data, p, pivotIndex - 1);
QuickSort(data, pivotIndex + 1, r);
}
}
void InsertionSort(int data[], int p,int r)
{
int i, j, temp;
for (i = p; i<(r-p)+1; i++)
{
temp = data[i];
for (j = i - 1; j >= 0 && data[j]>temp; j--)
data[j + 1] = data[j];
data[j + 1] = temp;
}
}
void快速排序(int-data[],int-p,int-r)
{
if(ptemp;j--)
数据[j+1]=数据[j];
数据[j+1]=温度;
}
}
完整的源代码在这里:-我想知道你为什么需要这样做
i < (r-p) + 1
i<(r-p)+1
我对那部分有怀疑
void InsertionSort(int data[], int p,int r)
{
int i, j, temp;
for (i = p; i <= r; i++)
{
temp = data[i];
for (j = i - 1; j >= 0 && data[j]>temp; j--)
data[j + 1] = data[j];
data[j + 1] = temp;
}
}
void InsertionSort(int-data[],int-p,int-r)
{
int i,j,温度;
对于(i=p;i=0&&data[j]>temp;j--)
数据[j+1]=数据[j];
数据[j+1]=温度;
}
}
如果你在寻找速度,std::sort
就是这个方法。哦,我确实意识到std::sort比我能写的任何东西都要快得多,我只是为了学习经验而这样做。这肯定会毁了排序,重要的是要注意,这两种方法本身都能正确工作,所以我想我的错误是把它们整合在一起,但我不知道会出什么问题。我可以得到输入样本和所需的输出吗?@user2968505我刚刚编辑了我的答案。你能用你的编译器检查一下吗?哦,我搞砸了,你的修复工作非常感谢。