C语言排序之选择排序(一)

来源:互联网 发布:linux系统开发工程师 编辑:程序博客网 时间:2024/05/21 00:16

今天主要写了点C的排序,现在想来,语言啥的都如浮云,当然能够做到最简单是最好的,比如用C++可以搞成模板,就省得写一大堆相似的东西,就是一个比较爽的事情,不过有些时候“高级”语言都让我们懒得去思考了,实在是没劲,还是思想重要,最近又对数学和算法充满了兴趣!越发觉得计算机或者带有“智能”系列的东西的神奇了,爽啊。不吐槽了,上今天的代码吧。

 1 /*rand()*/ 2 #include <stdlib.h> 3 /******************** 4 int rand(void) 5 void srand(unsigned int); 6 *********************/ 7 #include <time.h>/*time(NULL)*/ 8 #include <stdio.h> 9 /*直接插入排序*/10 void insort(int s[] , int n);11 /*希尔排序,就是将直接排序的增量分成若干组,相同的放一组,组内直接插入*/12 void shellsort(int s[] , int n);13 int main()14 {15     int num[10],i=0;16     srand(time(NULL));17     for(;i<10;i++)18     {19         num[i] = rand()%100;20     }21     //insort(num,10);22     shellsort(num , 10);23     for(i=0;i<10;i++)24     {25         printf("%d\n",num[i]);26     }27     return 0;28 }29 /*直接插入法是指对一个新数组重新一个个插入数据,小->大*/30 void insort(int s[],int n)31 {32     int i,j,key;33     /*key为监视,保存数据,1个数据不用比较*/34     for(i=1;i < n;i++)35     {36         key = s[i];37         j = i-1;38         while(key<s[j]&&j>=0)39         {40             s[j+1] = s[j];/*数据右移*/41             j--;42         }43         s[j+1] = key;44     }45 }46 /*希尔排序,选择就用希尔!*/47 void shellsort(int s[] , int n)48 {49     int i , j ,d,key;50     d = n/2;51     while(d>=1)52     {53         for(i = d ; i<n ; i++)54         {55             key = s[i];56             j = i -d;57             while(key < s[j]&&j>=0)58             {59                 s[j+d] = s[j];60                 j = j-d;61             }62             s[j+d] = key;63         }64         d = d/2;65     }66 }

 

2013-01-19

 

 

 


<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击