一、定義
首先將第一個記錄的關鍵字和第二個記錄的關鍵字進行比較,若爲逆序(即L.r[1].key > L.r[2].key),則將兩個記錄交換之,然後比較第二個記錄和第三個記錄的關鍵字。依次類推,直至第n-1個記錄和第n個記錄的關鍵字進行過比較爲止。上述過程稱爲一次起泡排序,其結果是使得關鍵字最大的記錄被安置到最後一個記錄的位置上。然後進行第二趟起泡排序,直至n - 1趟爲止就完成了整個起泡排序過程。
二、實現
/*
冒泡排序:
算法複雜度 0(n^2),穩定的算法
*/
void bubbleSort(ElementType list[],int n){
ElementType temp;
int i,j;
for(i = 0 ; i < n ;i++){//n - 1趟排序
for(j = 0; j < n - i + 1; j++){//逐個下沉,下沉到n - i + 1的位置
if(list[j] > list[j + 1]){//交換
temp = list[j + 1];
list[j + 1] = list[j];
list[j] = temp;
}
}
}
}