無注釋的:
#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類,可以實現任意資...