本文包含:
取隨機數(random函式)
快速排序(qsort函式)
快速排序的優化 - 數量少的時候使用插入排序,尾遞迴優化(qsort1函式)
插入排序 - 0位置使用"哨兵"小技巧提高效率(insertsort函式)
#include #include #include #include #include #include #include #include #include #include //標頭檔案引用的較多,有一些和本程式無關
using namespace std;
//取隨機數
int random(int min = 1, int max = 100);
//分割,交換記錄(可以合到qsort函式中,只是為了看著方便才單獨寫乙個函式)
int partition(int arr, int low, int high);
//排序
void qsort(int arr, int low, int high);
//優化排序,低於指定個數的排序使用插入排序
void qsort1(int arr, int low, int high);
//插入排序
//感覺這樣優化沒什麼必要,少量資料排序雖然理論上插入演算法更好一些,但實際上差別不大
void insertsort(int arr);
//自動生成等排序陣列的個數
const int num = 50;
//優化,低於此個數的排序使用插入排序,有資料認為7最合理,也有資料說是50
const int max_length_insert_sort = 7;
int main(int argc, char *argv)
int random(int min, int max)
//分割,交換記錄
int partition(int arr, int low, int high)
pivot = arr[low];
while(low < high)
arr[low] = pivot;//如果之前使用swap交換,就不用這句了
return low;
}//排序
void qsort(int arr, int low, int high)
}//優化排序,低於指定個數的排序使用插入排序
void qsort1(int arr, int low, int high)
} else
insertsort(arr);
}//插入排序
//感覺這樣優化沒什麼必要,少量資料排序雖然理論上插入演算法更好一些,但實際上差別不大
void insertsort(int arr)
}}
執行結果:
C C 插入排序
插入排序適用於小規模排序,其原理 設下標0,即array 0 為已排好序的子列,從陣列下標 1,即第二個元素array 1 開始,依次與子列相比較,直到當前的排序元素小於子列的元素不成立 小於則交換位置 就結束當前排序,進入下一次排序,直到子列長度等於陣列長。偽 for int i 1 i leng...
插入排序 C C
blog主要用於展示演算法流程 插入排序演算法 通過對未排序的資料逐個插入合適的位置而完成排序工作 流程 1 先對陣列前兩個資料進行從小到大排序 2 將第三個資料與前兩個資料比較,將第三個資料插入合適的位置 3 將第四個資料插入已排序好的前三個資料中 4 不斷重複,直到把最後乙個資料插入合適的位置 ...
氣泡排序,快速排序,插入排序
一 氣泡排序 大致分兩步 1 依次對比相鄰2個數字,前者比後者大就調換位置 2 重複第一步操作,直到所有數字都按順序排列 function bubblesort arr return arr 二 快速排序大致分三步 1 找基準 一般是以中間項為基準 2 遍歷陣列,小於基準的放在left,大於基準的放...