YTU 2754 C 習題 快速排序

2021-07-09 14:43:07 字數 1011 閱讀 1567

時間限制: 1 sec  

記憶體限制: 128 mb

提交: 92  

解決: 55

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

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

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

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請在該部分填寫缺少的***/}

a[first]=key;

quicksort(a,low,first-1);

quicksort(a,last+1,high);

}int main()

YTU 2757 C 習題 堆排序

1.堆排序 heapsort 是指利用堆這種資料結構所設計的一種排序演算法。堆是乙個近似完全二叉樹的結構,並同時滿足堆性質 即孩子節點的鍵值或索引總是小於 或者大於 它的父節點。假定一組資料的第n n 0 個數是乙個父節點,那麼對應第2n 1和第2n 2個數便是它的孩子節點,孩子節點最多兩個 2.堆...

C 習題 快速排序

題目描述 以某個數為標準,把比這個數大的都移到它的後面,比這個數小的都移到它的前面,這樣它後面的任意乙個數都比它前面的任意乙個數大,再將這前後兩組數再分別重複這一過程,最後就會得到有序的數列 補充 如果從大到小排列可以將比這個數大的都移到它的前面,比這個數小的都移到它的後面.快速排序從小到大排序演算...

YTU 2758 C 習題 基數排序

基數排序是一種分配排序,其基本思想是 排序過程無須比較關鍵字,而是通過 分配 和 收集 過程來實現排序。它們的時間複雜度可達到線性o n 基數排序所做的事情,是對n位分別進行排序。從直覺上來看,人們可能會覺得應該首先按最高有效位進行排序,不過這點與我們的直覺相反,基數排序首先對最低有效位數字進行排序...