排序 C 快速排序模板

2022-09-09 19:18:27 字數 1368 閱讀 1442

無注釋的:

#include using namespace std;

const int n = 100005;

int a[n];

void quicksort(int q, int l, int r)

int index = q[(l + r) >> 1];

int i = l - 1, j = r + 1;

while(i < j)while(q[i] < index);

dowhile(q[j] > index);

if(i < j)

}quicksort(q, l, j);

quicksort(q, j + 1, r);

}int main()

quicksort(a, 0, n - 1);

for(int i = 0; i < n; i++)else

}return 0;

}

有注釋的:

#include using namespace std;

const int n = 100005;

int a[n];

//快速排序

void quicksort(int q, int l, int r)

int index = q[(l + r) >> 1]; //這個值取誰都行,但是要注意邊界問題

// printf("index = %d\n", index);

int i = l - 1, j = r + 1; //同時走兩個迴圈,先往後放乙個位置,後續的操作都先做移動操作

// printf("l = %d\n", l);

// printf("r = %d\n", r);

while(i < j)while(q[i] < index);

//j指標同理

dowhile(q[j] > index);

//他們倆都停下的時候

//如果i指標在j指標的左邊,就交換

//如果i指標不在j指標的左邊的話,if進不去,下一次迴圈也進不去

if(i < j)}/*

for(int i = l; i <= r; i++)else }*/

//當i指標不在j指標的左邊的話,就證明這個l-r都排好了,

//然後遞迴的再分兩個區間,直到排序完畢

quicksort(q, l, j);

quicksort(q, j + 1, r);

}int main()

quicksort(a, 0, n - 1);

for(int i = 0; i < n; i++)else

}return 0;

}

C 快速排序模板

void quick sort int q,int l,int r while i quick sort q,l,j 剩下左邊再排一次 quick sort q,j 1,r 右邊再拍排一次 給定你乙個長度為n的整數數列。請你使用快速排序對這個數列按照從小到大進行排序。並將排好序的數列按順序輸出。輸入...

排序 快速排序模板

以某個記錄 元素 為界 該記錄稱為支點或樞軸 將待排序列分成兩部分 一部分 所有記錄的關鍵字大於等於支點記錄的關鍵字 另一部分 所有記錄的關鍵字小於支點記錄的關鍵字 演算法描述 1 任取待排序記錄序列中的某個記錄 例如取第乙個記錄 作為基準 樞 按照該記錄的關鍵字大小,將整個記錄序列劃分為左右兩個子...

c 快速排序模板類

一 目標 在實際問題的解決過程中,我們發現,很多問題都可以歸結為對資料的排序和查詢。而查詢的效率則在很大程度上依賴於排序的效率 尤其是在資料量達到海量級的時候。因此,設計乙個有效的排序演算法是至關重要的。本文設計了乙個通用的c quicksort 模板類。通過簡單的提供乙個data類,可以實現任意資...