C#排序算法

 1.二分查找

设待排序的记录共8个,排序码分别为28,13,72,85,39,41,6,20. 在前七个记录都已排序的基础上,采用折半插入第八个记录的过程如下:
(A) [6  13  28  39  41  72  85]  (20)
         l=1   m=4   r=7      
         20<39,  m-1=3=r
(B) [6  13  28]  39  41  72  85  (20)
         l=1   m=2   r=3
         20>13,  m+1=3=l
(C) 6  13  [28]  39  41  72  85  (20)
         l=m=r=3    
         20<28,  m-1=2=r      
         l>r,二分法结束,l=3为插入位置
(D) 6  13  (20)  28  39  41  72  85
1.插入排序之二分查找排序

2、排序算法
冒泡排序:这是最原始,也是众所周知的最慢的算法了。倒序(最糟情况)
第一轮:10,9,8,7->10,9,7,8->10,7,9,8->7,10,9,8(交换3次)
第二轮:7,10,9,8->7,10,8,9->7,8,10,9(交换2次)
第一轮:7,8,10,9->7,8,9,10(交换1次)
循环次数:6次
交换次数:6次
冒泡排序算法 
选择排序:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
初始关键字 [49 38 65 97 76 13 27 49]
第一趟排序后 13 [38 65 97 76 49 27 49]
第二趟排序后 13 27 [65 97 76 49 38 49]
第三趟排序后 13 27 38 [97 76 49 65 49]
第四趟排序后 13 27 38 49 [49 97 65 76]
第五趟排序后 13 27 38 49 49 [97 97 76]
第六趟排序后 13 27 38 49 49 76 [76 97]
第七趟排序后 13 27 38 49 49 76 76 [ 97]
最后排序结果 13 27 38 49 49 76 76 97
选择排序算法
直接插入排序(straight insertion sort)的作法是:
每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。
初始序列:
i=1 [46] 58 15 45 90 18 10 62
        ↓
i=2 [46 58] 15 45 90 18 10 62
         ┌——┘
         ↓
i=3 [15 46 58] 45 90 18 10 62
             ┌——┘
             ↓
i=4 [15 45 46 58] 90 18 10 62
                            ↓
i=5 [15 45 46 58 90] 18 10 62
             ┌—————┘
             ↓
i=6 [15 18 45 46 58 90] 10 62
        ┌————————┘  
        ↓
i=7 [10 15 18 45 46 58 90] 62
                                      ┌—┘
                                      ↓
i=8 [10 15 18 45 46 58 62 90]

插入排序算法
 希尔排序(缩小增量法) :属于插入类排序,是将整个无序列分割成若干小的子序列分别进行插入排序 初始:d=5   
          49   38   65   97   76   13   27   49*   55   04   
           |----------------------------|   
                  38                              27   
                   |---------------------------|   
                        65                              49*      
                         |----------------------------|   
                                97                              55   
                                  |--------------------------|   
                                      76                                04
                                        |-----------------------------|
  一趟结果   
          13   27   49* 55   04   49   38   65     97     76  
  d=3
          13   27   49* 55   04   49   38   65     97     76  
             |---------------|----------------|--------------------|   
                  27                04                 65   
                   |----------------|----------------|   
                         49*               49                  97   
                           |----------------|-----------------|   
  二趟结果   
            13   04   49* 38   27   49   66   65   97   76   
  d=1   
            13   04   49* 38   27   49   66   65   97   76   
              |-----|-----|-----|-----|-----|-----|-----|-----|-----|
  三趟结果   
            04   13   27   38   49* 49   55   65   76   97   
希尔排序

3..求n个数中m个数的全排列
posted @ 2008-01-21 11:56  weiwei~  阅读(336)  评论(0编辑  收藏  举报