排序演算法 交換排序之冒泡

2021-06-21 00:31:08 字數 1520 閱讀 1851

一、主要思想:

顧名思義,交換排序的主要操作是交換,其主要思想是在待排序列中選兩個記錄,將它們的關鍵碼相比較,如果反序(即排列順序與排序後的次序正好相反),則交換它們的儲存位置。

二、需要解決的關鍵問題

(1) 在一趟起泡排序中,若有多個紀錄位於最終位,應如何記載

解決方法:設定變數

exchange

記載記錄交換的位置,則一趟排序後,

exchange

記錄的一定是這一趟排序中記錄的最後一次交換的位置,且從此位置以後的所有記錄均已經有序。

演算法描述:if(r[j] > r[j+1])

(2) 如果確定起泡排序的範圍,使得已經位於最終位置的記錄不參與下一趟排序

解決方法:

bound

位置的記錄是無序區的最後乙個記錄,則每趟起泡排序的範圍是

r[1] –r[bound].

在一趟排序後,從

exchange

位置之後的記錄一定有序的,所有

bound= exchange.

演算法描述:

(3) 如何判別起泡排序的結束

解決方法:在每一趟起泡排序之前,

令exchange

的初值為零,在以後的排序過程中,只要有記錄交換,

exchange

的值就會大於0,

這樣在一趟比較完畢,就可以通過

exchange

的值是否為

0來判斷是否有記錄交換,從而判斷整個起泡排序的結束。

演算法描述:

while(exchange)

三、效能分析

最好情況(正序):

比較次數: n -1 移動次數: 0  時間複雜度為o(n).

最壞情況: (反序)

比較次數: [(n-1)* n ]/ 2  移動次數: [3n*(n-1) ]/ 2 時間複雜度為o(n^2)

平均複雜度就是o(n^2)

交換排序之氣泡排序

大學學的演算法已經基本遺忘了,最近又重新撿起來好好鑽研一下,那麼就先從排序開始。先說交換排序中的氣泡排序,這個是比較基礎的乙個排序演算法。1 基本思想 在要排序的一組數中,對當前還未排好序的範圍內的全部數,自上而下對相鄰兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。即 每當兩相鄰的數比較...

交換排序之氣泡排序

氣泡排序演算法的基本思想是 假設待排序表長為n,從前往後 或從後往前 兩兩比較相鄰元素的值,若為逆序 即a i 1 a i 則交換它們,直到序列比較完。我們成它為一趟冒泡,結果將最大 最小 的元素交換到待排序列的最後乙個位置。下一趟冒泡時,前一趟確定的最大元素不再參與比較,待排序列減少乙個元素,每趟...

交換排序之氣泡排序

交換排序的主要思路就是在排序過程中,不斷比較待排序序列中相鄰的兩個資料,如果次序相反,則將其位置交換,從而達到排序的目的,氣泡排序和快速排序都屬於交換排序 下面我們介紹氣泡排序的基本原理 氣泡排序是一種比較簡單的排序演算法,基本思想就是對所有的相鄰的記錄的關鍵字進行比較,如果次序不對就將其交換,從而...