Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 插入排序不起作用的quicks排序代码_C++_Algorithm_Sorting_Optimization - Fatal编程技术网

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我刚刚编辑了我的答案。你能用你的编译器检查一下吗?哦,我搞砸了,你的修复工作非常感谢。