基礎演算法 快速排序 C 實現

2021-10-07 20:11:14 字數 1499 閱讀 8959

演算法基本思想和步驟——分治思想

1.確定邊界點和分界點

2.調整區間

3.遞迴處理左右兩段

題目關鍵點:邊界的確定、區間的調整、調整後再遞迴

題目

給定你乙個長度為n的整數數列。

請你使用快速排序對這個數列按照從小到大進行排序。

並將排好序的數列按順序輸出。

輸入格式

輸入共兩行,第一行包含整數 n。

第二行包含 n 個整數(所有整數均在1~109範圍內),表示整個數列。

輸出格式

輸出共一行,包含 n 個整數,表示排好序的數列。

資料範圍

1≤n≤100000

輸入樣例:

53 1 2 4 5

輸出樣例:

1 2 3 4 5

**

#include

using

namespace std;

const

int n =

1e6+10;

int n;

int q[n]

;void

quick_sort

(int q,

int l,

int r)

quick_sort

(q, l, j)

;quick_sort

(q, j +

1, r)

;//遞迴處理調整後區間裡的數

}int

main()

題目

給定乙個長度為n的整數數列,以及乙個整數k,請用快速選擇演算法求出數列的第k小的數是多少。

輸入格式

第一行包含兩個整數 n 和 k。

第二行包含 n 個整數(所有整數均在1~109範圍內),表示整數數列。

輸出格式

輸出乙個整數,表示數列的第k小數。

資料範圍

1≤n≤100000,

1≤k≤n

輸入樣例:

5 32 4 1 5 3

輸出樣例:

3**

#include

using

namespace std;

const

int n =

100010

;int n;

int q[n]

;void

quick_sort

(int q,

int l,

int r)

quick_sort

(q, l, j)

;quick_sort

(q, j +

1, r);}

intmain()

(模板**於acwing使用者yxc)

基礎演算法 快速排序(C )

參考自 演算法筆記 include include include using namespace std 預設以a left 為主元的快排 int partition 1 int a,int left,int right int temp a left while lefttemp right a...

快速排序演算法 c 實現

namespace backpackproblem backpack bp new backpack profit int start 0 int end profit.length 1 bp.quicksort profit,start,end bp.print class backpack 快速...

快速排序演算法C 實現

經常看到有人在網上發快速排序的演算法,通常情況下這些人是在準備找工作,或者看 演算法導論 這本書,而在他們發布的 通常是差不多的版本,估計也是網上 copy 一下,自己改改,跑過了就算了,但是通常這樣玩根本沒有太大作用,如果到一家公司,給你一台不能上網的筆記本,20分鐘,你是根本寫不出來快速排序的演...