兩周實訓,擴充套件題: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...