日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

算法设计与分析(第四周)同时选最大和最小 优化解法

發(fā)布時(shí)間:2024/2/28 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法设计与分析(第四周)同时选最大和最小 优化解法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

思路


首先把n個(gè)數(shù)分成兩部分,每部分有n/2個(gè)數(shù)
然后把第一部分的數(shù)分別與第二部分對(duì)應(yīng)位置的數(shù)比較,如果左邊的大,就SWAP
一輪下來(lái)之后,數(shù)列被分成兩半,最小數(shù)肯定在左邊,最大數(shù)肯定在右邊
再?gòu)淖筮呎业阶钚?shù),從右邊找到最大數(shù)

此算法可有效降低時(shí)間復(fù)雜度

運(yùn)行效果

321 458 1 164 326 129 51 841 786 321 54 558 996 665 542 521 718 48 650 854 845 165 641 817 832 400 802 975 61 749 24 430 713 851 326 770 767 64 807 249 98 511 833 785 150 796 923 96 28 767 293 604 12 48 6 565 464 930 908 656 22 114 431 117 951 66 175 971 366 209 848 114 963 998 347 417 816 741 255 945 595 168 55 186 574 458 653 877 35 992 591 609 140 689 778 674 370 752 29 679
最小:1
最大:998
請(qǐng)按任意鍵繼續(xù). . .

代碼

//優(yōu)化解法 同時(shí)選最大和最小 #include<iostream> #define SWAP(a,b) {int t;t=a;a=b;b=t;} #define NUM 100//總個(gè)數(shù) using namespace std; int main() {int a[NUM];//輸入int i;for (i = 0; i < NUM; i++){cin >> a[i];}//比較偶數(shù)個(gè)int max, min;for (i = 0; i < NUM / 2; i++){if (a[i] > a[NUM / 2 + i]){SWAP(a[i], a[NUM / 2 + i]);//小的放左邊}}//找最小min = a[0];for (i = 0; i < NUM / 2; i++){if (a[i] < min){min = a[i];}}//找最大max = a[NUM / 2];for (i = NUM / 2; i < NUM; i++){if (a[i] > max){max = a[i];}}if (NUM % 2 != 0)//奇 最后輪空{if (a[NUM - 1] < min)min = a[NUM - 1];if (a[NUM - 1] > max)max = a[NUM - 1];}//輸出cout << "最小:" << min << endl;cout << "最大:" << max << endl;system("pause"); }

總結(jié)

以上是生活随笔為你收集整理的算法设计与分析(第四周)同时选最大和最小 优化解法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。