64,651
社区成员
发帖
与我相关
我的任务
分享
int n=5000;
double *temp[9]; //临时数据
for (int i=0;i<9;i++)
temp[i]=new double[n];
//赋值过程省略. . .
for (int i=0;i<9;i++)
quick_sort(temp[i],0,n);//排序
for (int i=0;i<9;i++)
delete[] temp[i];//释放报错
void quick_sort(double *A, int lo, int hi)
{
int i, j;
double pivot, temp;
if(lo == hi) return;
i=lo;
j=hi;
pivot= A[(lo+hi)/2];
/* Split the array into two parts */
do {
while (A[i] < pivot) i++;
while (A[j] > pivot) j--;
if (i<=j) {
temp= A[i];
A[i]= A[j];
A[j]=temp;
i++;
j--;
}
} while (i<=j);
if (lo < j) quick_sort(A, lo, j);
if (i < hi) quick_sort(A, i, hi);
}
void quick_sort(double *A, int lo, int hi)
{
int i, j;
double pivot, temp;
if(lo == hi) return;
i=lo;
j=hi;
pivot= A[(lo+hi)/2];
/* Split the array into two parts */
do {
while (i < j && A[i] < pivot) i++;
while (j > i && A[j] > pivot) j--;
if (i < j && A[i] >= pivot && A[j] <= pivot)
{
temp= A[i];
A[i]= A[j];
A[j]=temp;
if (j - i == 1)
break;
if (j - i == 2) {
i = j - 1;
break;
}
i++;
j--;
}
else
break;
} while (1);
if (lo < j) quick_sort(A, lo, j);
if (i < hi) quick_sort(A, i, hi);
}
int main()
{
int n = 5000;
double* temp[9];
for (int i = 0; i < 9; i++) {
temp[i] = new double[n];
for (int j = 5000; j>0; j--) {
*(temp[i] + j) = rand();
}
}
for (int i = 0; i < 9; i++) {
quick_sort(temp[i], 0, n);
}
for (int i = 0; i < 9; i++) {
delete[] temp[i];
}
}