理解氣泡排序和插入排序

2021-07-04 22:47:55 字數 998 閱讀 3134

我們還是用揭撲克牌來理解這兩種排序方法,我們需要從小到大來排序,假定最小的牌和最大的牌是未知的,那麼對於氣泡排序來講,過程就是揭起第一張牌,又揭起第二張牌,兩張牌比較,留下小的,又揭第三張牌,再與手中的牌比較,以此……那麼無論你手中現在是什麼牌,你都需要將所有的牌全部揭起來比較之後,才能確定你拿到的是最小的牌,冒出第乙個泡,接著還要用同樣的方法冒出第二個,第三個……的泡,雖然牌的總數越來越少,但是這樣的工作量還是很大的,顯然這樣做的效率是極低的。最好的情況是牌原本就是有序的,這樣你只需要揭牌後比較,不需要交換。

下面先附上冒泡的**,新手多謝指教

//冒泡法將輸入的數由小及大排序並輸出

#include

#include

int *input(int n)

return p;

}void maopao(int *q,int n)

}*(q+i)=temp;

}for(i=0;iprintf("%d ",*(q+i));

}}int main()

接著插入就比較好理解了,當我們面對一堆需要由小及大排序的牌時,我們不必要固執的找到最小的,而只是一張張揭起來,我們只需要維護好手中的牌保證有序,那麼過程就是只要拿新揭起來的牌和手中有序的牌比較,找到位置插進去就可以了 。整個過程需要的時間不僅和牌的總數相關,更與牌原來的順序相關,最壞情況是,原來的牌是完全倒序的,這樣每次都需要移動手中牌的位置進行插入

下面附上**,新手多謝指教

//用插入排序法實現對輸入的數由小及大排序並輸出

#include

#include

int *input(int n)

return p;

}void insert(int* q,int n)

else

break;}}

for(i=0;iprintf("%d ",*(q+i));

}}int main()

氣泡排序,插入排序

前提 void x sort elementtype a,int n 大多數情況下,為簡單起見,討論從小大的整數排序 n是正整數 只討論基於比較的排序 有定義 只討論內部排序 穩定性 任意兩個相等的資料,排序前後的相對位置不發生改變 沒有一種排序是任何情況下 都表現最好的 氣泡排序 void bub...

氣泡排序 插入排序

學習思路 思路講解 實現 1 通過雙重迴圈,相鄰兩個資料做對比,通過位置交換使其變得有序 2 時間複雜度 分析 解釋 外部迴圈從0開始i 內部迴圈從0開始j,完整迴圈後會將本次最大值放入陣列最後,下次迴圈可忽略相應的尾部資料 length i 1 重複1 2步即可完成排序 實現 public cla...

氣泡排序 選擇排序和插入排序

氣泡排序 思路 將相鄰的兩個數比較,將較小的數調到前頭 有n個數就要進行n 1趟比較,第一次比較中要進行n 1次兩兩比較,在第j趟比較中,要進行n j次兩兩比較。依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放...