八大排序 交換排序之 氣泡排序

2021-07-24 19:36:39 字數 936 閱讀 2585

起泡排序(bubble sort)的演算法思想是:設待排序有n個記錄,首先將第乙個記錄的關鍵字r1.key和第二個記錄的關鍵字r2.key進行比較,若r1.key>r2.key,就交換記錄r1和r2在序列中的位置;然後繼續對r2.key和r3.key進行比較,並作相同的處理;重複此過程,直到關鍵字rn-1.key和rn.key比較完成。其結果是n個記錄中關鍵字最大的記錄被交換到序列的最後乙個記錄的位置上,即具有最大關鍵字的記錄被「沉」到了最後,這個過程被稱為一趟起泡排序。然後進行第二趟起泡排序,對序列表中前n-1個記錄進行同樣的操作,使序列表中關鍵字次大的記錄被交換到序列的n-1位置上;

第i趟起泡排序是從r1到rn-i+1依次比較相鄰兩個記錄的關鍵字,並在「逆序」時交換相鄰記錄,其結果是這n-i+1個記錄中關鍵字最大的記錄被交換到n-i+1位置上。每一趟排序都有乙個相對大的資料被交換到後面,就像一塊塊「大」石頭不斷往下沉,最大的總是最早沉下;而具有較小關鍵字的記錄則不斷向上(前)移動位置,就像水中的氣泡逐漸向上飄浮一樣,冒到最上面的是關鍵字值最小的記錄。所以把這種排序方法稱為起(冒)泡排序。對有n個記錄的序列最多做n-1趟起泡就會把所有記錄依關鍵字大小排好序。如果在某一趟排序中都沒有發生相鄰記錄的交換,表示在該趟之前已達到排序的目的,整個排序過程可以結束。

package ch02;

import util.arrayutil;

public

class

bubblesort }}

}public

static

void

main(string args) ;

arrayutil.display(array);//陣列的某個值a[i]是值傳遞;整個陣列是引用傳遞

dobubble(array);

arrayutil.display(array);

}}

八大排序演算法之交換排序

在之前的兩篇部落格中,我們分別說了插入排序和選擇排序,有興趣的同學還可以戳鏈結去看看八大排序演算法之選擇排序 八大排序演算法之插入排序。交換排序主要說得是氣泡排序和快速排序,思想就和名字一樣是用交換來實現的。1.氣泡排序 基本思想 在要排序的陣列中,對當前還沒排好序的範圍內的全部數,進行依次比較,以...

八大排序演算法之交換排序

在之前兩篇文章中,我們學習了插入排序和選擇排序,八大演算法之插入排序,八大演算法之選擇排序,這篇文章,我們來了解一下交換排序。常用的交換排序有氣泡排序和快速排序,主要思想就是交換。1.氣泡排序 基本思想 每相鄰兩個數比較,若大小與要排序順序不同,則交換。將序列當中的左右元素,依次比較,保證右邊的元素...

八大排序之氣泡排序

氣泡排序,穩定,平均與最壞時間複雜度為o n 2 最好為o n 空間複雜度為o 1 include using namespace std void bubblesort int numbers,const int length int main int length 0 cin length fo...