这是我在c ++中的qsort代码。
#include <stdio.h>
void partition(int* arr, int start, int pivot, int end){
int i=start+1;
for(int j=start+1; j < end; j++){
if (arr[j]<pivot){
int c=arr[i];
arr[i]=arr[j];
arr[j]=c;
i++;
}
}
int c=arr[start];
arr[start]=arr[i-1];
arr[i-1]=c;
}
void qsort(int *arr, int start, int end, int len){
if (len<=1){
// break;
}
else{
int pivot=arr[start];
partition(arr, start, pivot, end);
qsort(arr, start, pivot-1, len-1);
qsort(arr, pivot+1, end, len-1);
}
}
int main(){
int len;
printf("Vvedite kolvo elementov");
scanf("%d", &len);
int *arr=new int[len];
for(int i=0;i<len; i++){
printf("\n Vvedite %d element", i);
scanf("%d", &arr[i]);
}
qsort(arr, 0, len, len);
for(int i=0; i<len; i++){
printf(" %d, ", arr[i]);
}
delete [] arr;
return 0;
}
但它的输出非常奇怪。例如 - 它可以在&#34; 5 1 2 4 3&#34;并对其进行排序,但是当我例如键入&#34; 998 603 805 990 900&#34;理论上它绝对与计算机相同,它打印全0。 任何关于如何识别/解决问题的建议都非常感谢。