| 1 | 1/1 | 返回列表 |
| 查看: 460 | 回復(fù): 0 | ||
進(jìn)擊的城管銀蟲 (初入文壇)
|
[求助]
分配排序問題
|
|
要求:隨機(jī)生成若干個隨機(jī)數(shù)進(jìn)行排序(如n=10^4,2*10^4,10^5,…等),記錄每個排序的時間耗費(fèi)(絕對時間?邏輯時間(關(guān)鍵字比較次數(shù),移動次數(shù))?)。 (2)分別給出正序和反序的初始序列進(jìn)行排序(如n=10^4),檢驗(yàn)算法對初始序列的敏感程度。 另給一個新的自己寫的也行 ![]() 我弄到這一步出現(xiàn)錯誤 不知道該怎么把隨機(jī)生成的數(shù)組的每一位分配給分配排序的函數(shù),然后又再正常輸出 分配 排序的關(guān)鍵字是多維的 假如一個數(shù)是654321 則要存成 【6 5 4 3 2 1】來進(jìn)行分配排序 #define CPP C++ #define MPP M++ #define MP2 M+=2 #define MP3 M+=3 #include <fstream.h> #include <iomanip.h> #include <stdlib.h> #include <time.h> #include <math.h> const int d=3; const int maxsize=100000; //數(shù)據(jù)表容量 typedef int datatype; typedef struct { datatype key[d]; //關(guān)鍵字域 int next; } rectype; //記錄類型 typedef rectype list[maxsize+2]; //數(shù)據(jù)表類型,0號單元不用 __int64 C,M; //比較和移動次數(shù) void check(list R,int n) { //檢驗(yàn)排序結(jié)果 int i; for(i=2;i<=n;i++) if(R.key<R[i-1].key) {cout<<"Error!\n";return;} cout<<"Correct! "; } void disp(list R,int n) { //顯示排序后的結(jié)果 int i; for(i=1;i<=n;i++) { cout<<setw(4)<<R.key; // if(i%20==0) cout<<endl; } cout<<endl; } int RadixSort(list R,int n){ const int r=10; typedef struct{ int f,e; }queue; int i,j,k,t,p; queue B[r]; for(i=0;i<n-1;i++) R.next=i+1; R[n-1].next=-1; p=0; for(j=d-1;j>=0;j--){ for(i=0;i<r;i++) B.f=B.e=-1; while(p!=-1){ k=R[p].key[j]; if(B[k].f==-1)B[k].f=p; else R[B[k].e].next=p; B[k].e=p; p=R[p].next; } i=0; while(B.f==-1)i++; p=B.f; t=B.e; while(i<r-1){ i++; if(B.f!=-1){ R[t].next=B.f; t=B.e; } } R[t].next=-1; } return p; } int random1(int num) {return rand();} //0~RAND_MAX=32767 int random3(int num) {//素數(shù)模乘同余法,0~M int A=16807; // 16807,39722040,764261123,630360016 48271? int M=2147483647; //有符號4字節(jié)最大素數(shù),2^31-1 int Q=M/A; int R=M%A; static int x=1,n=0,g=0; //seed(set to 1) static double r,r1=0,r2=0; int x1; x1=A*(x%Q)-R*(x/Q); if(x1>=0) x=x1; else x=x1+M; return x; } void main() { rectype *R,*R1,*S; //R1用于歸并排序的輔助存儲,S用于保存初始排序數(shù)據(jù) R=new list;if(R==NULL) {cout<<"數(shù)組太大!\n";exit(-1);} R1=new list;if(R1==NULL) {cout<<"數(shù)組太大!\n";exit(-1);} S=new list;if(S==NULL) {cout<<"數(shù)組太大!\n";exit(-1);} int i,n=maxsize; int choice; clock_t t1,t2; float s,t; //srand( (unsigned)time( NULL ) ); for(i=1;i<=10;i++){ for(j=1;j<d;j++) S.key[j]=random3(10); //生成0-n之間的隨機(jī)數(shù) } do { C=M=0; for(i=1;i<=n;i++) R.key=S.key; //取出初始數(shù)據(jù)用于排序 cout<<"選擇排序方法(0: 退出): \n\ 11:直接插入(帶監(jiān)視哨) 12:直接插入(無監(jiān)視哨) \n\ 21:希爾排序(無監(jiān)視哨) \n\ 41:冒泡(上升) 42:冒泡(下沉) \n\ 51:快速(遞歸) \n\ 61:直接選擇排序 \n\ 71:堆排序(非遞歸) \n\ 91:fenpei \n\ 81:二路歸并(非遞歸) \n"; cin>>choice; switch(choice) { case 91: t1=clock(); RadixSort(R,n); t2=clock(); break; default:; } check(R,n); // disp(R,n); cout<<" C="<<C/1e6<<" M="<<M/1e6<<" C+M="<<(C+M)/1e6; cout<<" 時間:"<<float(t2-t1)/CLK_TCK<<endl; } while(choice!=0); delete R; delete S; // delete R1; } |
找到一些相關(guān)的精華帖子,希望有用哦~
| 1 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[論文投稿]
chinese chemical letters英文版投稿求助
130+3
|
Yishengeryi 2026-03-30 | 3/150 |
|
|---|---|---|---|---|
|
[考研] 085600材料與化工調(diào)劑 +16 | kikiki7 2026-03-30 | 16/800 |
|
|
[考研] 0817化工學(xué)碩調(diào)劑 +7 | 努力上岸中! 2026-03-31 | 7/350 |
|
|
[考研] 323分 食品與營養(yǎng)調(diào)劑 +3 | 嘿ooo 2026-03-31 | 3/150 |
|
|
[考研]
|
Gymno 2026-03-30 | 6/300 |
|
|
[考研] 材料科學(xué)與工程求調(diào)劑 +10 | 深V宿舍吧 2026-03-29 | 10/500 |
|
|
[考研] 抱歉 +3 | 田洪有 2026-03-30 | 3/150 |
|
|
[考研] 332求調(diào)劑 +6 | @MZB382400 2026-03-28 | 6/300 |
|
|
[考研] 318求調(diào)劑 +7 | 陳晨79 2026-03-30 | 7/350 |
|
|
[考研] 一志愿中南大學(xué)化學(xué)0703總分337求調(diào)劑 +6 | niko- 2026-03-27 | 6/300 |
|
|
[考研] 290求調(diào)劑 +3 | dfffsar 2026-03-29 | 3/150 |
|
|
[考研] 0856材料化工調(diào)劑 總分330 +14 | zhubinhao 2026-03-27 | 14/700 |
|
|
[考研] 321求調(diào)劑 +7 | 璞玉~~ 2026-03-25 | 8/400 |
|
|
[考研] 292求調(diào)劑 +14 | 鵝鵝鵝額額額額?/a> 2026-03-25 | 15/750 |
|
|
[考研] 265求調(diào)劑 +8 | 小木蟲085600 2026-03-27 | 8/400 |
|
|
[考研] 266求調(diào)劑 +11 | 陽陽哇塞 2026-03-27 | 12/600 |
|
|
[考博] 26申博 +3 | 加油沖! 2026-03-26 | 3/150 |
|
|
[考研] 0856調(diào)劑 +5 | 求求讓我有書讀?/a> 2026-03-26 | 6/300 |
|
|
[考研] 復(fù)試調(diào)劑,一志愿南農(nóng)083200食品科學(xué)與工程 +5 | XQTJZ 2026-03-26 | 5/250 |
|
|
[考研] 調(diào)劑推薦 +5 | 清酒714 2026-03-26 | 6/300 |
|