C C 快速排序,插入排序

2021-07-09 07:09:00 字數 1468 閱讀 3178

本文包含:

取隨機數(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,大於基準的放...