題目描述
以某個數為標準,把比這個數大的都移到它的後面,比這個數小的都移到它的前面,這樣它後面的任意乙個數都比它前面的任意乙個數大,再將這前後兩組數再分別重複這一過程,最後就會得到有序的數列;
補充:如果從大到小排列可以將比這個數大的都移到它的前面,比這個數小的都移到它的後面.
快速排序從小到大排序演算法描述:
1)設定兩個變數first、last,令first等於一組數的第乙個數的下標,last等於一組數的最後乙個數的下標;
2)以某個陣列元素作為關鍵資料(這裡將這組數的第乙個數作為關鍵資料),賦值給key,即key=a[first];
3)從last開始向前搜尋,即由後開始向前搜尋(last--),找到第乙個小於key的值a[last],將a[last]給a[first];
4)從first開始向後搜尋,即由前開始向後搜尋(first++),找到第乙個大於key的a[first],將a[first]給a[last];
5)重複第3、4步,直到first=last,將key的值給a[first];
6)將first兩邊的兩組數分別再進行排序,重複1、2、3、4、5步;直到每組只剩乙個數排序結束.
現在,我們的題目來了...
輸入一組整數,將這組整數從小到大排列。
部分**已給定如下,只需要提交缺失的**。
#include
using namespace std;
void quicksort(int a,int low,int high)
int first=low;
int last=high;
int key=a[first];
while(first
int main()
int first=low;
int last=high;
int key=a[first];
while(first= key)
a[first] = a[last];
while(first < last && a[first] <= key)
a[last]=a[first];
} a[first]=key;
quicksort(a,low,first-1);
quicksort(a,last+1,high);
} int main()
快速排序習題
1.修改快速排序中的pation演算法,使得返回q,t,其中p q t r.下標小於q的都小於主元,大於t的都大於主元,在q t之間的等於主元 pation a,p,r q p 1 t q for int i 0 i2.對區間的模糊排序 我們知道一系列數的大致區間,怎樣對這些區間進行排序使得每個區間...
Problem D C 習題 快速排序
time limit 1 sec memory limit 128 mb submit 470 solved 205 submit status web board 以某個數為標準,把比這個數大的都移到它的後面,比這個數小的都移到它的前面,這樣它後面的任意乙個數都比它前面的任意乙個數大,再將這前後兩...
YTU 2754 C 習題 快速排序
時間限制 1 sec 記憶體限制 128 mb 提交 92 解決 55 以某個數為標準,把比這個數大的都移到它的後面,比這個數小的都移到它的前面,這樣它後面的任意乙個數都比它前面的任意乙個數大,再將這前後兩組數再分別重複這一過程,最後就會得到有序的數列 補充 如果從大到小排列可以將比這個數大的都移到...