無中生有之突擊NOIP(1) 排序

2021-07-23 21:53:29 字數 1212 閱讀 4772

1、桶排序

定義:時間複雜度特別大,較為雞肋,在給定的小範圍內可以進行進行對照般的排序。

理解,就是把範圍內的資料按照範圍乙個個放到由範圍標號的桶裡,然後按照每個桶裡的數量列印。

**實現如下:

#include

#include

#include

int main()

for(i=1000;i>=0;i--)

for(j=1;j<=book[i];j++)//出現了幾次i就列印幾次,若未出現,則book[i]=0,j=1,不滿足,所以不輸出。

cout

0;}

2、氣泡排序

定義:每次找相鄰的兩個量,如果它們的順序不滿足要求就交換。

理解:複雜度較低但比較麻煩,從名字理解即可,冒泡冒泡,像水中的氣泡一樣向上浮動,一次次比較。詳情看**。

實現**如下:

#include

#include

#include

using

namespace

std;

int main()

}for(i=1;i<=n;i++)//輸出

cout

0; }

3、快排

定義:從數列的頭與尾分別找到乙個比開始值小的和大的,然後交換。若兩頭相遇則與初始值交換,再從中間將佇列一分為二,形如二分法。

理解:在此不過多解釋,有一種東西叫sort使用方式如下:

用#includesort即可使用。

sort(begin,end),表示乙個範圍,例如:

int _tmain(int argc, _tchar* argv)

,i; for(i=0;i

<20;i++)

cout<[i]

<20);

for(i=0;i

<20;i++)

cout<[i]

0;}

總結:

大體應該就如此了,排序其實並不是太單一,在很多的題裡面我們用到的排序很廣泛,但例如我們比較乙個值,然後它的其他屬性需要跟著這個東東變,那麼我們還是需要定義乙個結構體,然後用sort或者用在排序裡面實現,sort需定義乙個cmp的自定義函式,定義格式簡寫:

int cmp(const.node&a,const node&b)

{return a.s

無中生有之突擊 ( ) 更多演算法 一)

又開始了哈 最小生成樹 何為最小生成樹呢?我們有很多路可以選,可有有很多種方案,然而如何達到乙個最低值,而取消掉那些多餘的路呢?這就是它的作用所在!演算法分析 首先我們要讓 個頂點的圖連通,那麼至少需要 條邊。既然我們想讓邊的總長度之和最短,我們自然可以首先選擇最短的邊,直到選擇了 條邊為止,此時有...

第0章 無中生有

每個學計算機的同學都想寫乙個作業系統,每個學儲存的同學都想開發一款磁碟陣列。每當看到 作業系統 四個字我就衝動,那是大腦皮層的強烈反應,無奈能力不濟,繞了一大圈都沒入門。今年5月剛好沒啥正事,所以打算重整旗鼓,寫乙個非常簡單的os,想用來敲開 作業系統 這個大門。這個系列的文章只記錄開發過程的點滴經...

Go語言列舉 無中生有

go語言中沒有列舉這種資料型別的,但是可以使用const配合iota模式來實現,如果要為列舉新增方法的話還涉及到型別的定義,以及為新建型別新增方法。所以在開始介紹實現go語言的列舉實現之前,我們先來看看型別別名 在go1.9版本新增的功能,主要用於 公升級 遷移中型別的相容性問題 和型別定義的區別。...