史上最詳細的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()

 

藉此圖片 若有侵權 聯繫本人刪除
相關文章
相關標籤/搜索