基本排序算法及分析(一):插入排序,直接选择排序

声明待排序元素类型

 1 /**/ /*--------------------------
 2typedef.h
 3方便修改待排序元素类型
 4-------------------------------------*/

 5 #ifndef TYPEDEF_H
 6 #define  TYPEDEF_H
 7
 8 typedef  int  T;
 9
10 #endif


插入排序:

 1 /**/ /*---------------------------------------------------------------------------------------
 2Insertion_sort.h
 3直接插入排序
 4对以数组形式给出的元素排序
 5时间复杂度为(逆序数)N(N-1)/4 = O(N^2),并且在最坏情形下达到这个值
 6最好情形下运行N次,最坏情形下运行2+3+…+N
 7------------------------------------------------------------------------------------------------*/

 8
 9 #ifndef INSERTION_SORT_H
10 #define  INSERTION_SORT_H
11
12 #include  " typedef.h "
13 // 直接插入排序 
14 void  Insertion_sort(T  * a,  int  n)
15 {
16    for(int i = 1; i != n; ++i)
17    {
18        T temp = a[i];
19        int j = i - 1;
20        for(; j >= 0 && temp < a[j]; --j )
21            a[j + 1= a[j];
22        a[j + 1= temp;
23    }

24}

25
26 #endif


直接选择排序:

 1 /**/ /*----------------------------------------------
 2DirectSelection_sort.h
 3直接选择排序
 4时间复杂度O(N^2)
 5--------------------------------------------------------*/

 6 #ifndef DIRECTSELECTION_SORT_H
 7 #define  DIRECTSELECTION_SORT_H
 8
 9 #include  " typedef.h "
10 #include  " swap.h "
11
12 // 直接选择法排序
13 void  DirectSelection_sort(T * a,  int  n)
14 {
15    for(int i = 0; i != n; ++i)
16    {
17        int k = i;
18        for(int j = i; j != n; ++j)
19            if(a[j] < a[k]) k = j;
20        swap(a[k],a[i]);
21    }

22}

23
24 #endif



幸运草 2009-04-22 16:44 发表评论

转载于:https://www.cnblogs.com/liyuxia713/archive/2009/04/22/2540782.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值