在排序演算法中還有一大類是交換類排序,其中最為常見,最好理解的便是氣泡排序了。
氣泡排序的演算法思想:通過無序區中相鄰記錄關鍵字的比較和位置的交換,使得關鍵字最小(最大)的記錄如冒泡一般上浮,至水面(有序區),整個演算法從最下面的記錄開始,對每兩個相鄰的記錄的值進行比較,使關鍵字較小的交換至較大的記錄之上,以次迴圈,經過一趟排序之後無序區中關鍵字最小的記錄到大最上端,將其踢出無序區,在無序區中重複以上操作。直到所有記錄都變為有序為止。
值得注意的是,每趟排序完畢後,無序區要減一,有序區加一。
下面是c語言實現的氣泡排序:
//氣泡排序
#include void print (int a,int n)
} printf("比至第%d個元素\t",n-i);
print(a,n);
} }
int main (void);
int n=8;
bubblesort(a,n);
print(a,n);
}
氣泡排序的時間複雜度為o(n^2),空間複雜度為o(1),其主要耗費時間在元素的交換上。 交換排序之氣泡排序
大學學的演算法已經基本遺忘了,最近又重新撿起來好好鑽研一下,那麼就先從排序開始。先說交換排序中的氣泡排序,這個是比較基礎的乙個排序演算法。1 基本思想 在要排序的一組數中,對當前還未排好序的範圍內的全部數,自上而下對相鄰兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。即 每當兩相鄰的數比較...
交換排序之氣泡排序
氣泡排序演算法的基本思想是 假設待排序表長為n,從前往後 或從後往前 兩兩比較相鄰元素的值,若為逆序 即a i 1 a i 則交換它們,直到序列比較完。我們成它為一趟冒泡,結果將最大 最小 的元素交換到待排序列的最後乙個位置。下一趟冒泡時,前一趟確定的最大元素不再參與比較,待排序列減少乙個元素,每趟...
交換排序之氣泡排序
交換排序的主要思路就是在排序過程中,不斷比較待排序序列中相鄰的兩個資料,如果次序相反,則將其位置交換,從而達到排序的目的,氣泡排序和快速排序都屬於交換排序 下面我們介紹氣泡排序的基本原理 氣泡排序是一種比較簡單的排序演算法,基本思想就是對所有的相鄰的記錄的關鍵字進行比較,如果次序不對就將其交換,從而...