#include<stdio.h> #include <stdlib.h> #include <time.h>
int quicksort(int a[], int s, int r); /*声明函数*/ void main() { int num[10]; int i,j; time_t t;
srand((unsigned) time(&t)); for(i=0; i<10; i++) { num[i]=rand(); printf("%5d ",num[i]); if(i%10==0) printf("\n"); } printf("\n"); quicksort(num, 0, 9); for(i=0; i<10; i++) /*输出排序后的结果*/ { printf("%5d ",num[i]); if(i%10==0) printf("\n"); } getch(); }
int quicksort(int a[], int s, int r) /*快速排序*/ { int i,j,pivot; i=s; j=r; pivot=a[s]; while (i<j) { while ((a[j] > pivot) && (i<j)) j = j - 1; a[i]=a[j]; while ((a[i] < pivot) && (i<j)) i = i + 1; a[j]=a[i];
} a[i] = pivot;
if(s<(i-1)) quicksort(a, s, i-1); if(r<(i+1)) quicksort(a, i+1, r); getch(); }
我运行的结果怎么不对?结果只排出了最小值的数组,我怎么感觉是起泡排序的结果啊?比如说随机产生10个数:192 385 485 27 472 48 308 4892 34 4566
结果显示27 192 385 485 472 48 308 4892 34 4566
我就不明白怎么会是这个结果呢?帮帮忙。
还有如何返回数组啊?