zoukankan      html  css  js  c++  java
  • 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个数的全排列
  • 相关阅读:
    HDU 5744
    HDU 5815
    POJ 1269
    HDU 5742
    HDU 4609
    fzu 1150 Farmer Bill's Problem
    fzu 1002 HangOver
    fzu 1001 Duplicate Pair
    fzu 1150 Farmer Bill's Problem
    fzu 1182 Argus 优先队列
  • 原文地址:https://www.cnblogs.com/luowei/p/1047018.html
Copyright © 2011-2022 走看看