正文

最快的排序算法2007-03-20 12:50:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/lingdlz/24131.html

分享到:

最快的排序算法:   桶 排 序                           经分析通过比较的排序算法如,选择排序,插入排序,快速排序,堆排序  等最快为 n*log(n),这是比较排序算法的极限任何通过比较进行排序  的算法都不可能超过这个极限. 现在要介绍的 桶排序 可以超过它为  n ,当然 桶排序 的灵活性却拿不出手,必须要知道待排序数组中最大  的数.下面的程序,首先由用户输入数组的大小,程序随机产生最大数为 不超过 10000 的随机数组,最后输出原始数组,以及排序后的数组.    编译器: VC ++ 6.0  Author : 江南孤峰   Time :2006--10--27  #include <stdio.h>#include <malloc.h>#include <memory.h>#include <stdlib.h>#include <ctype.h> int main(){ int order[10000],total,*array,i;  while( 1){  memset(order,0,sizeof(int)*10000);  printf("\nPlease input the size of the array:");  scanf("%d",&total);  array = (int *)malloc(sizeof(int)*total + 4);  printf("The source array as follow:\n");  for(i = 0; i < total; i ++){   array[i] = rand() % 10000;   printf("%d ",array[i]);   order[array[i]] ++; // 这里就是排序,够简洁吧 !  }  printf("\n\nThe array after by order as follow:\n");  for(i = 0; i < 10000; i ++){   while(order[i]){    printf("%d ",i);    order[i] --;   }  }  free(array);  printf("\n\nContinue(y/n)? :");  getchar();  i = getchar();  if(isupper(i))   i = tolower(i);  if(i == 'n')   break; } return 0;}

阅读(9213) | 评论(4)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册