CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  图形处理/算法

求各种排序算法(c语言描述)

楼主blucecat(广种薄收)2002-02-15 13:00:31 在 VC/MFC / 图形处理/算法 提问

100 问题点数:100、回复次数:7Top

1 楼iProgram(na)回复于 2002-02-15 13:06:23 得分 0

我列几个名字,你去搜搜哈:  
  快速排序  
  “冒泡法”排序  
  双排序  
  堆排序  
  希尔排序  
  选择排序(堆排序好想就是一种选择排序)  
  归并排序  
  基数排序Top

2 楼liu_feng_fly(笑看风云 搏击苍穹 衔日月)回复于 2002-02-15 13:48:51 得分 0

qsort,c运行库就有的快速排序函数Top

3 楼wyarrant(ostrich)回复于 2002-02-15 13:49:24 得分 0

数据结构基本课程?Top

4 楼freeleo(粑粑)回复于 2002-02-15 14:44:58 得分 100

#include   <stdio.h>  
  #include   <stdlib.h>  
  #include   <time.h>  
  #define   NUM   30  
   
  init(item,count)  
  int   item[];  
  int   count;{  
      void   print();  
      int   i;  
      randomize();  
      for(i=0;i<count;i++)  
          item[i]=(int)rand();  
      print(item,count);  
  }  
   
   
  main(){  
      void   bubble();  
      void   shaker();  
      void   select();  
      void   insert();  
      void   shell();  
      void   quicksort();  
      void   print();  
      int   a[NUM];  
      int   i,j;  
      int   choice=0;  
      clrscr();  
      printf("\t-----Compare   the   sort   method-----\n");  
      printf("%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",  
      "Enter   your   choice:",  
          "1,Bubble   sort;",  
          "2,Shaker   sort;",  
          "3,Select   sort;",  
          "4,Insert   sort;",  
          "5,Shell   sort;",  
          "6,Quicksort   sort;",  
          "7,Quit."   );  
      while(choice!=7){  
          printf("?");  
          scanf("%d",&choice);  
          switch(choice){  
              case   1:  
  init(a,NUM);  
  bubble(a,NUM);  
  print(a,NUM);  
  break;  
              case   2:  
  init(a,NUM);  
  shaker(a,NUM);  
  print(a,NUM);  
  break;  
              case   3:  
  init(a,NUM);  
  select(a,NUM);  
  print(a,NUM);  
  break;  
              case   4:  
  init(a,NUM);  
  insert(a,NUM);  
  print(a,NUM);  
  break;  
              case   5:  
  init(a,NUM);  
  shell(a,NUM);  
  print(a,NUM);  
  break;  
              case   6:  
  init(a,NUM);  
  quicksort(a,NUM);  
  print(a,NUM);  
  break;  
              }  
          }  
      printf("End   of   run!\n");  
  }  
   
  /*void   print(){}*/  
   
  void   print(item,count)  
  int   item[];  
  int   count;{  
      int   i;  
      for(i=0;i<count;i++){  
          printf("%d",item[i]);  
          if((i+1)%3==0)  
  printf("\n");  
          else  
  printf("\t");  
      }  
      printf("\n");  
  }  
   
   
  void   bubble(item,count)  
  int   *item;  
  int   count;  
  {  
      register   int   a,b;  
      register   int   t;  
      for(a=1;a<count;++a)  
          for(b=count-1;b>=a;--b){  
              if(item[b-1]>item[b]){  
  t=item[b-1];  
  item[b-1]=item[b];  
  item[b]=t;  
              }  
          }  
  }  
   
   
  void   shaker(item,count)  
  int   *item;  
  int   count;{  
      int   a,b,c,d;  
      int   t;  
      c=1;  
      b=count-1;d=count-1;  
      do{  
          for(a=d;a>=c;--a){  
              if(item[a-1]>item[a]){  
  t=item[a-1];  
  item[a-1]=item[a];  
  item[a]=t;  
  b=a;  
              }  
          }  
          c=b+1;  
          for(a=c;a<d+1;++a){  
              if(item[a-1]>item[a]){  
  t=item[a-1];  
  item[a-1]=item[a];  
  item[a]=t;  
  b=a;  
              }  
          }  
          d=b-1;  
      }while(c<=d);  
  }  
   
   
  void   select(item,count)  
  int   *item;  
  int   count;{  
      register   int   a,b,c;  
      int   t;  
      for(a=0;a<count-1;++a){  
          c=a;  
          t=item[a];  
          for(b=a+1;b<count;++b){  
              if(item[b]<t){  
  c=b;  
  t=item[b];  
              }  
          }  
          item[c]=item[a];  
          item[a]=t;  
      }  
  }  
   
   
  void   insert(item,count)  
  int   *item;  
  int   count;{  
      register   int   a,b;  
      int   t;  
      for(a=1;a<count;++a){  
          t=item[a];  
          b=a-1;  
          while(b>=0&&t<item[b]){  
              item[b+1]=item[b];  
              b--;  
          }  
          item[b+1]=t;  
      }  
  }  
  void   shell(item,count)  
  int   *item;  
  int   count;{  
      register   int   i,j,k,s,w;  
      int   x,a[5]={9,5,3,2,1};  
      for(w=0;w<5;w++){  
          k=a[w];s=-k;  
          for(i=k;i<count;++i){  
              x=item[i];  
              j=i-k;  
              if(s==0){  
  s++;  
  item[s]=x;  
              }  
              while(x<item[j]&&j>=0&&j<=count){  
  item[j+k]=item[j];  
  j-=k;  
              }  
              item[j+k]=x;  
          }  
      }  
  }  
   
   
  void   quicksort(item,count)  
  int   *item;  
  int   count;{  
      qs(item,0,count-1);  
  }  
   
  qs(item,left,right)  
  int   *item;  
  int   left,right;{  
      register   int   i,j;  
      int   x,y;  
      i=left;j=right;  
      x=item[(left+right)/2];  
      do{  
          while(item[i]<x&&i<right)   i++;  
          while(x<item[j]&&j>left)     j--;  
          if(i<=j){  
              y=item[i];  
              item[i]=item[j];  
              item[j]=y;  
              i++;j--;  
          }  
      }while(i<=j);  
      if(left<j)   qs(item,left,j);  
      if(i<right)   qs(item,i,right);  
  }Top

5 楼freeleo(粑粑)回复于 2002-02-15 14:47:02 得分 0

我原来学的时候,想试试几种排序的差别才写的。呵呵,挺有意思的Top

6 楼NowCan(城市浪人)回复于 2002-02-15 16:31:01 得分 0

多看书,自己写。像你这样,再编20年也赶不上盖子。Top

7 楼hawkgao(红旗)回复于 2002-02-15 17:36:22 得分 0

《C算法程序集》请话的,全部解决问题Top

相关问题

  • 数据算法:C++中的排序,查找!
  • 求排序算法~~~~~~~~~~~~!!!
  • 请介绍有关数据结构算法c++描述的书
  • 数据结构、算法与应用—C++语言描述,
  • 排序的最快算法?
  • 全排序算法问题?
  • 这何种算法?(排序)
  • 关于排序算法
  • 求桶排序算法
  • 想学习排序算法

关键词

  • 排序
  • item
  • count
  • include

得分解答快速导航

  • 帖主:blucecat
  • freeleo

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo