氣泡排序可以說是最簡單,大多數人最先接觸的排序演算法。臨近的數字兩兩進行比較,按照規定的順序進行交換,,
這樣一趟過去後,最大或最小的數字就像氣泡一樣被『排』最後一位,然後第二趟之後,次大或次小的數字被『排』到倒數第二位,以此類推,直至第一位與第二位順序正確。
實現過程如圖:
氣泡排序複雜度為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.插入...