我用C++写的一个快排程序,在VC下运行完之后总会出现Debug error的提示,求帮助~

#include <iostream>

using namespace std;

void QuickSort(int array[], int first, int last){
int PivotKey = array[(first+last)/2]; //枢轴
int i = first;
int j = last;
int tempt = 0;

do{
while(array[i]<PivotKey) //从两头扫描数组
i++;
while(array[j]>PivotKey)
j--;
if(i<=j){ //交换数组元素
tempt=array[i];
array[i]=array[j];
array[j]=tempt;
i++;
j--;
}
}while(i < j);
if(i < last) //剩余部分的处理
QuickSort(array, i, last);
if(j > first)
QuickSort(array, first, j);

}

int main(int argc, char* argv[]){
int number = 0;
int* array = new int[];
int index = 0;

cin >> number; //待排数组大小

for(index=0; index<number; index++){ //输入待排数组
cin >> array[index];
}

QuickSort(array, 0, number-1); //调用快排方法

for(index=0; index<number; index++){ //输出
cout << array[index] << endl;
}

delete[] array; //释放数组空间
array = NULL;
}

PS:运行完之后出现
debug error
DAMAGE: after Normal block (#47) at 0x00381D48
这是神马意思

第1个回答  2012-01-17
#include <iostream>

using namespace std;

void QuickSort(int array[], int first, int last) {
int PivotKey = array[(first + last) / 2]; //枢轴
int i = first;
int j = last;
int tempt = 0;

do {
while (array[i] < PivotKey) //从两头扫描数组
i++;
while (array[j] > PivotKey)
j--;
if (i <= j) { //交换数组元素
tempt = array[i];
array[i] = array[j];
array[j] = tempt;
i++;
j--;
}
} while (i < j);
if (i < last) //剩余部分的处理
QuickSort(array, i, last);
if (j > first)
QuickSort(array, first, j);

}

int main(int argc, char* argv[]) {
int number = 0;

int index = 0;
/*修改的地方*/
cin >> number; //待排数组大小
int* array = new int[number]; // 这句要放在后面
/*修改的地方*/
for (index = 0; index < number; index++) { //输入待排数组
cin >> array[index];
}

QuickSort(array, 0, number - 1); //调用快排方法

for (index = 0; index < number; index++) { //输出
cout << array[index] << endl;
}

delete[] array; //释放数组空间
array = NULL;
}本回答被提问者采纳
第2个回答  2012-01-17
int* array = new int[]; //这一行,数组定义有问题,如果想定义大小为number的数组,则代码可改为如下:
int *array;
cin >> number;
array = new int[number];
改正后在本人机器上编译通过,无问题
另外快速排序没有必要自己写的,可以使用STL:
#include <algorithm> //加入这个头文件
sort(array, array + number); //写在要排序的位置,对array数组的array[0]...array[number-1]进行排序,默认为升序
关于STL的algorithm库的其他内容可以参考这个网站:http://www.cplusplus.com/reference/algorithm/
写的比较乱,见谅
相似回答
大家正在搜