基礎排序演算法

2022-06-14 11:57:11 字數 1110 閱讀 5922

下面分別列舉了選擇排序、插入排序、氣泡排序和希爾排序三種排序方法。

在下面的插入排序中,我做了很大改進,放棄了採用交換的方式,因為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...