資料結構 筆記:選擇排序和插入排序
阿新 • • 發佈:2018-11-14
選擇排序的基本思想
-每次(例如底 i 次,i = 0 ,1,...,n-2)從後面n-i個待排的資料元素中選出關鍵字最小的元素,作為有序元素序列底 i 個元素.
template <typename T> static void Select(T array[] , int len,bool min2max = true) { for(int i=0;i < len;i++) { int min = i; for(int j = i+1; j < len ; j++) { if( min2max? (array[min] > array[j]) : (array[min] < array[j])) { min = j; } } if(min != i) { Swap(array[i],array[min]); } } }
插入排序
template <typename T> static void Insert(T array[] , int len,bool min2max = true) { for(int i = 1;i < len;i++) { int k = i; T e = array[i]; for(int j = i- 1;(j>=0) && (min2max ?(array[j] > e) :(array[j] < e));j--) { array[j+1] = array[j]; k = j; } if(k != i) { array[k] = e; } } }
總結:
-選擇排序每次選擇為拍元素中最下元素
-插入排序每次講第i個元素插入前面i - 1個已排元素中
-選擇排序是不穩定的排序法,插入排序是穩定的排序方法
-選擇排序和插入排序的事件複雜度為O(n^2)