啊哈演算法 小哼買書(練習快速排序)

2021-10-06 17:01:23 字數 1557 閱讀 1196

小哼的學校要建立乙個圖書角,老師派小哼去找一些同學做調查,看看同學們都喜歡讀哪些書。小哼讓每個同學寫出乙個自己最想讀的書的isbn號(你知道嗎?每本書都有唯一的isbn號,不信話你去找本書翻到背面看看)。當然有一些好書會有很多同學都喜歡,這樣就會收集到很多重複的isbn號。小哼需要去掉其中重複的isbn號,即每個isbn號只保留乙個,也就說同樣的書只買一本(學校真是夠摳門的)。然後再把這些isbn號從小到大排序,小哼將按照排序好的isbn號去書店去買書。請你協助小哼完成「去重」與「排序」的工作。

輸入格式:

輸入有2行,第1行為乙個正整數,表示有n個同學參與調查(n<=100)。第2行有n個用空格隔開的正整數,為每本圖書的isbn號(假設圖書的isbn號在1~1000之間)。

輸出格式:

改編自全國青少年資訊學奧林匹克聯賽(noip2006)普及組第一題《明明的隨機數》。

限制:每個測試點1秒

樣例 1 :

輸入:

10

2040

3267

4020

89300

40015

輸出:

8

1520

3240

6789

300400

由題目可知分為兩種思路,可以先篩除重複數字再排序,也可以先排序再篩除重複數字,這道題目主要練習一下新學的快速排序。

#include

#include

using

namespace std;

void

quicksort

(int left,

int right, vector<

int>

&arr)

//快速排序

int i, j, base, temp;

i = left;j = right;

base = arr[left]

;while

(iwhile

(arr[i]

<=base&&iif(i < j)

} arr[left]

= arr[i]

; arr[i]

= base;

quicksort

(left, i -

1, arr)

;quicksort

(i +

1, right, arr);}

intmain()

quicksort(0

, a -

1, c)

;int count =1;

//第乙個數肯定不會重複 讓計數器等於一

for(

int i =

1; i < a; i++)}

cout << count << endl;cout << c[0]

<<

" ";

//輸出一共有多少個不重複的數同時換行輸出第乙個數

for(

int i =

1; i < a; i++)}

return0;

}

小哼買書 排序去重

小哼的學校要建立乙個圖書角,老師派小哼去找一些同學做調查,看看同學們都喜歡讀哪些書。小哼讓每個同學寫出乙個自己最想讀的書的isbn號 你知道嗎?每本書都有唯一的isbn號,不信話你去找本書翻到背面看看 當然有一些好書會有很多同學都喜歡,這樣就會收集到很多重複的isbn號。小哼需要去掉其中重複的isb...

快速排序(啊哈演算法)

include include using namespace std int a 101 n void quicksort int left,int right quicksort 1,n for i 1 i n i while arr i temp ii 這裡兩個while的順序是不能改變的,想...

快速排序(啊哈演算法)

include include using namespace std int a 101 n void quicksort int left,int right quicksort 1,n for i 1 i n i while arr i temp ii 這裡兩個while的順序是不能改變的,想...