C C 學習 TOP4問題

2021-06-28 19:16:49 字數 2488 閱讀 5247

兩周實訓,擴充套件題:top4問題

問題描述:找出若干個數字中最大的前四個數

該問題視問題規模不同,選用的演算法也不同。

100個內使用冒泡或選擇排序,進行完整的排序,問題不大。

而成千上萬個數字時,使用冒泡和選擇進行完整排序就需要花費很多的時間。

不過,選擇排序有個好處就是,可以直接挑出陣列中最大的那個出來。只要遍歷四次陣列就能把四個最大的數字挑出來。這能在瞬間內完成。

除此之外,使用歸併排序能輕鬆對千萬級資料進行排序,實測中也就一瞬間的事情。

下面分別展示:10項完整選擇排序,1千萬項四趟選擇排序,1千萬項歸併排序

完整**:

一、10項完整選擇排序

/*

module name:top4(10項選擇排序)

module date:20141223

module auth:clyoko

description:從鍵盤輸入10個無序的數,找出最大

的前四個數

other:

revision history:

date rel ver. notes

20141223 1.0 建立程式

選擇排序版,複雜度o(n^2)

*/#include

using

namespace

std;

int main()

,t,max=0;

cout

<<" top4排名\n";

cout

<<"請輸入10個數字,用空格鍵隔開:" ;

for(i=1;i<=10;i++)

cin>>data[i];

//有限量選擇排序

//i哨兵,j當前處理項

for(j=1;j<=4;j++)}}

cout

<<"top4:";

for(i=1;i<=4;i++)

cout

<"pause");

return

0;}

二、1千萬項四趟選擇排序

/*

module name:top4(千萬項選擇排序)

module date:20141223

module auth:clyoko

description:從鍵盤輸入10個無序的數,找出最大

的前四個數

other:

revision history:

date rel ver. notes

20141223 1.0 建立程式

選擇排序版,複雜度o(n^2)

*/#include

#include

#include

using

namespace

std;

int main()}}

stop=clock();

cout

<<"top4:";

for(i=1;i<=4;i++)

cout

<"耗時:"

<<(stop-start)/clk_tck<<"秒\n";

system("pause");

return

0;}

三、1千萬項歸併排序

/*

module name:top4(歸併排序)

module date:20141223

module auth:clyoko

description:生成一千萬個數字,找出最大的前四個數

other:

revision history:

date rel ver. notes

20141223 1.0 建立程式

歸併排序版,複雜度o(nlogn)

*/#include

#include

#include

using

namespace

std;

void merge(long source,long temp,long startindex,long midindex,long endindex)

void mergesort(long source,long temp,long startindex,long endindex)

else

return;

}int main(int argc,char * argv)

作者: clyoko

文章**:

卡薩帝洗衣機 從TOP4到TOP3,正衝刺TOP2

保持高階第一的同時,卡薩帝洗衣機的整體份額也在逐年增長。從行業第四到第三,卡薩帝洗衣機還在向行業第二強勢邁進。從資料來看,2019年在全價位段份額為11.3 位居行業第四 2020年在全價位段份額達到14.5 位居行業第三。在2021年剛開始,這一優勢又有了迅猛提公升,中怡康發布的資料顯示,2021...

c c 學習筆記 (4)

類的基本思想是資料抽象和封裝。資料抽象是一種依賴於介面和實現分離的程式設計技術。對於類中的方法,this形參是乙個隱式定義的。實際上,任何自定義名為this的引數或變數的行為都是非法的。且我們說this是指象本物件。引入的const 函式。其引入的意義承上,以下例來說 一般情況,成員函式繫結的thi...

c c 學習筆記 4

c c 的控制流跟c 的差不多,分別有if else else if while for do while break continue以及goto.對於if else的習題為對於一下折半查詢的例子,用while迴圈語句共執行2次測試,其實可以只用一次,於是要求改寫,原 如下 int binsear...