下面分別列舉了選擇排序、插入排序、氣泡排序和希爾排序三種排序方法。
在下面的插入排序中,我做了很大改進,放棄了採用交換的方式,因為swap的效率太低了,所以我們改用挨個移位,在移動不了的情況之下進行複製的方法。
// used for test
// created by lizeyi on 2020/11/16.
//#ifndef algrothim_sorttesthelper_h
#define algrothim_sorttesthelper_h
#include #include #include #include #include using namespace std;
namespace sorttesthelper
arr[j] = e;}}
//選擇排序
templatevoid selectionsort(t arr,int n)
//n = newn;
// 優化,每一趟bubble sort都將最大的元素放在了最後的位置
// 所以下一次排序,最後的元素可以不再考慮
// 理論上,newn的優化是這個優化的複雜版本,應該更有效
// 實測,使用這種簡單優化,時間效能更好
n --;
}// 希爾排序(插入排序的改進版)
templatevoid shellsort(t arr, int n)
h /= 3;}}
// 1 return new array. number is n . range from rangel to ranger [rangel,rangr]
templateint *generaterandomarray(int n , int rangel , int ranger)
}return true;
}//3 計算排序時間
templatevoid testsort(string sortname, void(* sort) (t ,int ),t arr,int n)
}#endif //algrothim_sorttesthelper_h
[1]維基百科.排序演算法[eb/ol].排序演算法,2013-11-01. 演算法基礎 排序演算法
1.氣泡排序 原理有一列資料,從第乙個數開始,第乙個和第二個進行比較,如果第乙個大就交換,如果第二個大就不變,再第二個和第三個比較,一次類推,第二輪是從第乙個數開始比到倒數第二個數,第三輪是從第乙個數比到倒數第三個數.以此類推.def bubble nums for j in range len n...
基礎演算法 排序演算法
話不多說,上 include include include include include define n 10000500 long long beg intcnt,n void show time void swap int a,int b 稱這兩個函式為比較函式,函式名即相當於指標,將其寫...
基礎排序演算法
氣泡排序 最簡單,效率最差,實際工作中不推薦使用 private static void sort int list system.out.println 共交換 swap count 選擇排序 可看成是對於冒泡的改進版,減少了交換的次數 private static void sort int l...