演算法設計與分析 氣泡排序

2021-10-25 19:50:40 字數 949 閱讀 2919

1、比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。

2、對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。

3.針對所有的元素重複以上的步驟,除了最後乙個。

4.持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

時間複雜度:若檔案的初始狀態是正序的,則只需要一趟掃瞄即可完成排序。

若初始檔案是反序的,需要進行 n-1趟排序。每趟排序要進行 n-i次關鍵字的比較(1≤i≤n-1),且每次比較都必須移動記錄三次來達到交換記錄位置。在這種情況下,比較和移動次數均達到最大值。

氣泡排序的最壞時間複雜度為 o(n²)。

綜上,因此氣泡排序總的平均時間複雜度為o(n²)。

#include

#define arr_len 255

/*陣列長度上限*/

#define elemtype int

/*元素型別*/

/* 氣泡排序 */

/* 1. 從當前元素起,向後依次比較每一對相鄰元素,若逆序則交換 */

/* 2. 對所有元素均重複以上步驟,直至最後乙個元素 */

/* elemtype arr: 排序目標陣列; int len: 元素個數 */

void bubblesort (elemtype arr,

int len)}}

int main (

void);

int len =10;

int i;

bubblesort (arr, len)

;for

(i=0

; i) printf (

"%d\t"

, arr[i]);

putchar (

'\n');

return0;

}

排序演算法分析 氣泡排序

假設有n個元素,現在要把這些元素按照從小到大的順序進行排序,那麼演算法步驟如下,從第0個元素開始,比較相鄰的兩個元素,第0個和第1個,第1個和第2個,第n 2個和第n 1個,比較範圍是 0,n 1 所有元素都參與比較 如果左邊的比右邊的大,就交換他們的位置,一直比較到最後乙個元素。這樣經過第一輪交換...

排序演算法 氣泡排序演算法分析與實現 Python

december 22,2015 1 12 pm 原理是臨近的數字兩兩進行比較,按照從小到大或者從大到小的順序進行交換,這樣一趟過去後,最大或最小的數字被交換到了最後一位,然後再從頭開始進行兩兩比較交換,直到倒數第二位時結束,其餘類似看例子。例子為從小到大排序,原始待排序陣列 6 2 4 1 5 9...

氣泡排序演算法分析

氣泡排序的基本思想 對於待排序數列,依次比較相鄰元素,若順序相反,則交換位置,重複此步驟直至完成排序.以 5,4,3,2,1 來演示整個排序過程 原始序列 5,4,3,2,1 第一趟排序 4,5,3,2,1 4,3,5,2,1 4,3,2,5,1 4,3,2,1,5 第二趟排序 3,4,2,1,5 ...