C++ 快速排序错误
C++ Quicksort error
我正在尝试实现快速排序算法,但对于第 34 行和第 36 行,我不断收到错误"数组下标的无效类型'double*[double]'",对于第 39 行,"调用快速排序::QuickSort 没有匹配函数" 这是代码。谢谢。
double *QuickSort::Processor(double *Result, double *Array,int Size)
{
if (Size==0)
return 0;
double *smallList, *largeList;
smallList=new double[Size];
largeList=new double[Size];
double pivot=Array[0];
int SmallNum, LargeNum=0;
for (int i=1;i<Size;i++)
{
if(Array[i]<pivot)
smallList[SmallNum++]=Array[i];
else
largeList[LargeNum++]=Array[i];
}
QuickSort (smallList,smallList,SmallNum);
QuickSort (largeList,largeList,LargeNum);
int num;
for(int i=0;i<SmallNum;i++)
Result[num++]=smallList[i];
Result[num++]=pivot;
for(int i=0;i<LargeNum;i++)
Result[num++]=largeList[i];
delete [smallList];
delete [largeList];
return Result;
}
我不确定为什么你的问题被否决了。我看到您已经包含了相当数量的代码,并且您的问题易于理解且切中主题。
无论如何,这些行:
delete [smallList];
delete [largeList];
应该是
delete [] smallList;
delete [] largeList;
你的第二个问题是你正在调用一个名为QuickSort
的函数。大概这应该是递归调用,但这不是方法的名称。您的方法称为Processor
修复:
#include <iostream>
void copy(double* dest, const double* src, const int size) {
for (int i = 0; i < size; i++) dest[i] = src[i];
}
double* quick_sort(double* dest, const double* src, const int size) {
if (size == 0) return nullptr;
double* left_array = new double[size];
double* right_array = new double[size];
double pivot = src[0];
int left_size = 0; // initialize this
int right_size = 0;
for (int i = 1; i < size; i++) {
if (src[i] < pivot) {
left_array[left_size++] = src[i];
} else {
right_array[right_size++] = src[i];
}
}
quick_sort(left_array, left_array, left_size);
quick_sort(right_array, right_array, right_size);
copy(dest, left_array, left_size);
dest[left_size] = pivot;
copy(dest + left_size + 1, right_array, right_size);
delete[] left_array;
delete[] right_array;
return dest;
}
void print(const double arr[], const int size) {
for (int i = 0; i < size; ++i) {
std::cout << arr[i] << " ";
}
std::cout << "n";
}
int main() {
double src[20];
double dest[20];
for (int i = 0; i < 20; ++i) src[i] = 7 * i % 16;
quick_sort(dest, src, 20);
print(dest, 20);
return 0;
}
结果:
0 0 1 2 3 4 5 5 6 7 7 8 9 10 11 12 13 14 14 15
相关文章:
- C++运行时错误与快速排序算法抛出堆栈转储错误
- 使用快速排序对 C++ 中的可视化工具错误进行排序
- 并行快速排序分区中的隔离错误
- 快速排序;分段错误,但找不到位置?
- 在最坏的情况下试验快速排序.它运行良好,但在最坏的情况下发生未知错误.我想
- C++ 快速排序错误
- 快速排序中的交换函数给出错误的输出
- 快速排序算法,一些特定输入序列的错误答案和分段错误
- 在快速排序程序中有错误
- 为什么我在快速排序时遇到分段错误
- C++:在模板快速排序功能中接收"couldn't deduce template parameter"错误
- 快速排序不起作用(分段错误)
- 使用C++的快速排序错误
- 错误的线程访问/seg故障快速排序
- 分区出现快速排序逻辑错误
- c++快速排序算法中500000排序整数数组的Seg错误
- 使用类在 C++ 中快速排序错误
- 递归快速排序导致分段错误(不是溢出)
- 快速排序是赛格错误
- 在程序中找不到错误(快速排序实现)