#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
我就不明白怎么会是这个结果呢?帮帮忙。
还有如何返回数组啊?