正文

最快的排序算法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;
}

阅读(9062) | 评论(4)


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

评论

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