經典排序演算法學習筆記一 氣泡排序

2022-02-09 13:52:02 字數 1477 閱讀 1266

資料結構

陣列

最差時間複雜度

o(n^2)

最優時間複雜度

o(n)

平均時間複雜度

o(n^2)

最差空間複雜度

總共o(n),需要輔助空間o(1)

比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。

對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。

針對所有的元素重複以上的步驟,除了最後乙個。

持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

function bubble_sort (array, length) }}

#include void bubble_sort(int arr, int

len)

}int

main() ;

int len = (int) sizeof(arr) / sizeof(*arr);

bubble_sort(arr, len);

inti;

for (i = 0; i < len; i++)

printf(

"%d

", arr[i]);

return0;

}

(1)設定乙個標誌,如果這一趟發生了交換,則為true,否則為false。明顯如果有一趟沒有發生交換,說明排序已經完成。

偽**:參考

do

for i = 1

to indexoflastunsortedelement

if leftelement >rightelement

swap(leftelement, rightelement)

實現:參考

void bubblesort2(int a, int

n) k--;}}

(2)如果有100個數的陣列,僅前面10個無序,後面90個都已排好序且都大於前面10個數字,那麼在第一趟遍歷後,最後發生交換的位置必定小於10,且這個位置之後的資料必定已經有序了,記錄下這位置,第二次只要從陣列頭部遍歷到這個位置就可以了。

參考:白話經典演算法系列之一 氣泡排序的三種實現

實現:

void bubblesort3(int a, int

n) }

}

經典演算法學習 氣泡排序

氣泡排序是我們學習的第一種排序演算法,應該也算是最簡單 最常用的排序演算法了。不管怎麼說,學會它是必然的。今天我們就用c語言來實現該演算法。示例 已經上傳至 演算法描述如下 1 比較相鄰的前後兩個資料,如果前面資料大於後面的資料,就將兩個資料交換 2 這樣對陣列的第0個資料到n 1個資料進行一次遍歷...

氣泡排序演算法 演算法學習筆記

最近準備換工作,然後面了幾家公司,收到了乙份還算滿意的offer。面試過程中發現大公司都會喜歡面一些演算法題。對於經常關注演算法的人而言可能並不難,因為都是一些基礎題,比如快速排序 氣泡排序 二叉樹等等。但是對於平時工作從不關心演算法的人而言那可真的夠頭大的。今天覆習了氣泡排序,順便記錄下。也提醒下...

經典演算法學習(一)排序之氣泡排序

演算法即內功 1.排序是什麼 排序簡單來說就是以公升序或者是降序來排列資料的演算法。2.為什麼要排序 排序是電腦科學中非常重要的的一類演算法,排序可以顯著地降低問題的複雜性。比如查詢。3.排序的分類 氣泡排序是最簡單的一種排序演算法。它從輸入陣列的第乙個元素開始迭代到最後乙個元素。比較相鄰的兩個元素...