資料結構《一》 排序演算法之氣泡排序

2021-08-09 11:04:03 字數 1001 閱讀 2176

氣泡排序可以說是最簡單,大多數人最先接觸的排序演算法。臨近的數字兩兩進行比較,按照規定的順序進行交換,,

這樣一趟過去後,最大或最小的數字就像氣泡一樣被『排』最後一位,然後第二趟之後,次大或次小的數字被『排』到倒數第二位,以此類推,直至第一位與第二位順序正確。

實現過程如圖:

氣泡排序複雜度為o(n²),**過程如下:

#include#define size 5

using namespace std;

typedef structtext;

void swap(text *b, int p, int q)

void bubble_sort(text *a)}}

}void show(text *a)

bubble_sort(text);

show(text);

return 0;

}

執行結果:

穩定性:

如上圖所示,待排序數列中有3個2,為分辨每個2的身份,定義結構體時,賦乙個字元以示差別,三個2輸入的順序,身份分別為qet,經過排序後,其身份並未被打亂,因此氣泡排序是穩定的,本例可以將結構體陣列容量加大,更具有說服力~

演算法改良:

假如待排序序列為1、2、3、4、5,可能swap函式根本一次也沒被呼叫,造成資源浪費,所以氣泡排序可以進行改進,改進後時間複雜度最小為o(n)

void bubble_sort(text *a)

}if(!change)

break;}}

資料結構《一》 排序演算法之選擇排序

選擇排序演算法描述 假設有一陣列,內有n個無序數字,進行從小到 擇排序,從第乙個數字開始遍歷陣列,挑選最小的數字與陣列第乙個數字進行交換,然後從第二個數字開始進行第二次遍歷,選次小的數字與第二個數字進行交換,以此類推,第n 1遍遍歷後,陣列排序完成。選擇排序實現過程 時間複雜度為o n 實現過程如下...

資料結構系列 一 排序演算法

1.2 插入排序 1.3 選擇排序 1.4 歸併排序 1.5 堆排序 1.6 快速排序 基於資料狀況的排序演算法 1.7桶排序 1.8 小結 穩定排序 相對次序並沒有改變 void bubblesortv1 int a,int n 實現 增加乙個sorted標誌,對於有序陣列則不再進行比較判斷。複雜...

演算法(一)排序

一 o n 2 的排序演算法 1.選擇排序 selection sort 先找到最小的 public static void selectsort int arr 2.氣泡排序 bubble sort 先找到最大的 public static void bubblesort int arr 3.插入...