氣泡排序是一種簡單的排序演算法,其基本思想就是兩兩相鄰的進行比較以陣列a=為例
第一步就是3和1進行比較3比1 大所以兩者交換
接下來就是繼續把3和4比,4比3大不換
繼續下去我們發現4比5小則交換
繼續比較5和2,5比2大則5和2交換
第一輪結束,我們可以繼續第二輪,在上一輪中我們已經把陣列中最大的元素得到並移到末端第二輪重複第一輪只是不需要遍歷末端元素了
下面是給出的**:
#includevoid bubblesort(int arr, int len)//len是陣列長度
} }}int main()
; bubblesort(arr, 5);
int n;
for (n = 0; n < 5; n++)
return 0;
}
關於優化:有時候我們會發現資料本身已經序列化了,不需要繼續排序了,上面的**並不會考慮到只會一直遍歷,我們可以認為新增乙個標緻去控制這樣可以減少不必要的遍歷**如下:
#includevoid bubblesort(int arr, int len)
} }}int main()
; bubblesort(arr, 5);
int n;
for (n = 0; n < 5; n++)
return 0;
}
排序演算法之 氣泡排序優化
氣泡排序優化演算法思想 我們通過在程式定義了乙個bool型別的flag變數,用來判斷往後的迴圈當中,陣列是否已經是有序的,每一輪迴圈都會設定其值為true,當有元素對調位置時,就將flag的值設定為true,表示該陣列還不是有序陣列。每一輪都要判斷flag的值,如果判斷當前一輪操作沒有元素有位置調換...
氣泡排序演算法及優化
氣泡排序是一種典型的交換排序演算法,通過交換資料元素的位置進行排序。從序列頭部開始,進行兩兩比較,根據大小交換位置,直到最後將最大 小 的資料元素交換到了佇列的隊尾,從而成為有序序列的一部分 下一次繼續這個過程,直到所有資料元素都排好序。演算法的核心在於每次通過兩兩比較交換位置,選出剩餘無序序列裡最...
氣泡排序及演算法優化
用雙重迴圈來控制,當相鄰元素不滿足要求的順序排列 從小到大或從大到小 時,就將兩元素交換位置,以此逐漸遍歷。void bubblesort int array long endtime system.currenttimemillis 列印排序後的前10個數 for int i 0 i 10 i s...