C 習題 快速排序

2021-10-13 22:20:30 字數 1174 閱讀 4848

題目描述

以某個數為標準,把比這個數大的都移到它的後面,比這個數小的都移到它的前面,這樣它後面的任意乙個數都比它前面的任意乙個數大,再將這前後兩組數再分別重複這一過程,最後就會得到有序的數列;

補充:如果從大到小排列可以將比這個數大的都移到它的前面,比這個數小的都移到它的後面.

快速排序從小到大排序演算法描述:

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 以某個數為標準,把比這個數大的都移到它的後面,比這個數小的都移到它的前面,這樣它後面的任意乙個數都比它前面的任意乙個數大,再將這前後兩組數再分別重複這一過程,最後就會得到有序的數列 補充 如果從大到小排列可以將比這個數大的都移到...