史上最詳細的c語言和python的插入排序演算法
插入排序原理:所謂插入排序,就像我們在打牌(鬥地主)時,整理我們自己手中自己的牌一樣,就像是2,1,3,9,j,k,5,4,這四張牌.
我們要把它其中的幾張牌整理成12345這樣的 然後出牌,是不是就得將這幾張牌放到一起,或者是說以其中的一張牌為中心,將其他四張按大小進行插入。
話不多說上**:c語言:
1python:void
insert();
4intj;5
int len = sizeof(init_array)/4;//
獲取陣列實際長度6//
從第二位開始比較前一位
7for (int i = 1; i < len; i++)
19 init_array[j+1]=buffer;
20//
將buffer傳給init_array[j+1],因為init_array[j]是比buffer還小的數。
21//
按照從大到小的順序,所以buffer要放到init_array[j+1]後面。
2223}24
for (int k = 0; k < len; ++k)
27 }
definsert():
init_array=[2,3,5,1,22,99,44,6,7]
for i in range(1,len(init_array)):
j=i-1buffer = 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-1init_array[j+1] =buffer
(init_array)
insert()
史上最詳細的C語言和Python的選擇排序演算法
話不多說上 c語言 選擇排序走起 原理 吃透原理再去實現,選擇排序也是類似於氣泡排序,時間複雜度也是o 2,外層迴圈是十輪。每輪都找出最小值,然後把它放到最前,已經放在前面的 下一輪就不用再去比較 void choice 獲取陣列的長度,因為c語言的每個int型佔四個位元組,所除以4 int len...
《C語言結構體史上最詳細的講解》
我們知道,在c語言中有一些基本的資料型別,如 結構體的宣告語法如下 struct structure tag 結構體的標籤 one or more structure variables 乙個或多個結構體變數的定義 結構體標籤 structure tag 是可選的,但是推薦還是寫上,這樣使得 更加規...
史上最詳細的C 函式指標
每乙個函式都占用一段記憶體單元,它們有乙個起始位址,指向函式入口位址的指標稱為函式指標 指向函式的指標變數的一般定義形式為 資料型別 指標變數名 參數列 1 函式指標的定義形式中的資料型別是指函式的返回值的型別。2 區分下面兩個語句 int p int a,int b p是乙個指向函式的指標變數,所...