史上最详细的C语言和Python的插入排序算法


史上最详细的C语言和Python的插入排序算法
插入排序原理:所谓插入排序,就像咱们在打牌(斗地主)时,整理咱们本身手中本身的牌同样,就像是2,1,3,9,J,K,5,4,这四张牌.
咱们要把它其中的几张牌整理成12345这样的 而后出牌,是否是就得将这几张牌放到一块儿,或者是说以其中的一张牌为中心,将其余四张按大小进行插入。

话很少说上代码:
C语言:
 1 void insert(){
 2     //define a array which have ten number
 3     int init_array[10]={8,2,1,9,77,55,66,42,3,5};
 4     int j;
 5     int len = sizeof(init_array)/4;//获取数组实际长度
 6     //从第二位开始比较前一位
 7     for (int i = 1; i < len; i++) {
 8         int buffer=init_array[i];
 9         //这里为什么要定义一个buffer呢
10         // 由于后面要对数组元素进行后移 更改顺序 ,因此i不变,可是init_array[i]会变
11         j=i-1;
12         while(j>=0&&buffer>init_array[j])
13             //若是出现比init_array[j]还小的数值,这里就对前面排好序的数组进行后移
14             //大于号就是从大到小的顺序
15         {
16             init_array[j+1]=init_array[j];
17             j--;
18         }
19         init_array[j+1]=buffer;
20         //将buffer传给init_array[j+1],由于init_array[j]是比buffer还小的数。
21         // 按照从大到小的顺序,因此buffer要放到init_array[j+1]后面。
22 
23     }
24     for (int k = 0; k < len; ++k) {
25         printf("%d\n",init_array[k]);
26     }
27 }
 

Python:算法

def insert():
    init_array=[2,3,5,1,22,99,44,6,7]
    for i in range(1,len(init_array)):
        j=i-1
        buffer = init_array[i]#这个buffer很重要,这里为什么要定义一个buffer呢由于后面要对数组元素进行后移 更改顺序 ,因此i不变,可是init_array[i]会变
        while(j >= 0 and buffer > init_array[j]):#这里也要用buffer进行比较,缘由相同
            init_array[j+1] = init_array[j]
            j = j-1
        init_array[j+1] = buffer
    print(init_array)
insert()

 

借此图片 若有侵权 联系本人删除
相关文章
相关标签/搜索