思想:假設我們排公升序
在乙個陣列arr[ ]中,資料個數確定,n個資料,從第乙個開始,把第乙個當作比較依據,我們挨個往後兩兩比較,找到比當前數大的就交換,小於等於的就拿下乙個數字作為下一次的比較依據,這樣直到兩個數字比較完,把最大數排到最後,成功排出最後乙個最大數字,下一次整個比較變為n-1。
直到要比較的數字個數變為1,所有的數字都排完序。
排降序的話,就是從最後乙個開始,從後往前比較。
圖示:
時間複雜度:o(n²/2)
空間複雜度:o(1)
根據思想來判斷,是按乙個方向,依次進行的比較交換,並不會交換相同資料的相對位置,所以是穩定的。
a表示陣列位址,n代表陣列大小。
void
swap
(int
* num1,
int* num2)
void
bubblesort
(int
* a,
int n)}if
(!change)
//如果沒改變任何位置,說明已經有序。直接退出。
end--;}
}
氣泡排序(C語言版)
氣泡排序是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。它的變化過程如下圖 下面我們用 實現 include includeint main for j 0 j 9 j...
氣泡排序 c語言版
氣泡排序是我們在排序中比較常見的一種排序,它的思路簡單,但應用卻十分廣泛,今天我們就來看看它的 以及它是如何實現的。以下是 include void sort int a,int len int main void int i 0 sort a,6 for i 0 i 6 i printf n re...
經典排序 氣泡排序 C語言版
本人小白一枚,為了能夠更好的學習和記錄,故用這個部落格記錄學習過程,也希望得到各位高人的指點。現在就從最基礎的經典演算法開始!如有不對,希望得到指正,這樣才能更好的進步 氣泡排序 從前面開始,前後數字比較,將大的交換到後面,則迴圈一輪下來最大的數字到了最後,以此類推每次迴圈都將最大的放在最後 如果第...