请高手解决C语言编程问题——排序方法比较!!!

产生1000个随机数,分别用冒泡排序和快速排序两种方法来进行排序。给出各自的排序思路。要求比较冒泡排序和快速排序的效率,给出各自的排序时间及结果,只写下排序结果的前20个数。能不能给出比较完整的C语言程序。

第1个回答  2013-11-20
冒泡法:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{int j,i, n[1000],e,t,x;<br/>srand(time(NULL));<br/>for(i=0; i<1000; i++)<br/>{<br/>n[i]=rand()%32767;<br/>}
for(j=0;j<1000;j++)
{for(e=0;e<1000-j;e++)<br/>{if(n[e]>n[e+1])<br/>{<br/>t=n[e]; n[e]=n[e+1];n[e+1]=t;<br/>}}}
for(x=0;x<20;x++)
printf("%d\n",n[x]);
}

快速排序法:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void qSort(int list[ ], int left, int right) /*lfet = 0, right = MAX*/
{
int s;
int i, j;
int temp;
if(left < right) {
s = list[left];
i = left-1;
j = right + 1;
while(i+1!=j) {
if(list[i+1]<=s)
i++;
else if(list[j-1]>s)
j--;
else {
temp=list[i+1];
list[++i]=list[j-1];
list[--j]=temp;
}
}
list[left] = list[i];
list[i] = s;
qSort(list, left, i - 1); /*对左边递归*/
qSort(list, i + 1, right); /*对右边递归*/
}
}

int main()
{int j, n[1000],o;<br/>srand(time(NULL));<br/>for(j=0; j<1000; j++)<br/>{<br/>n[j]=rand()%32767;}
qSort(n,0,999);
for(o=0;o<20;o++){
printf("%d\n",n[o]);
}
}

这就是上面两个程序的源程序,至于那个会快一点,你自己测试一下吧!嘻嘻嘻~~~~~~~~