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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

3*n/2 - 2

發布時間:2025/4/9 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 3*n/2 - 2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

求區間范圍最小值最大值  
  用分治法(Divide and Conquer)求n元數組最小元與最大元,當n=1時,不用比較,最大元和最小元都是這個數;當n=2時,一次比較就可以找出兩個數據元素的最大元和最小元;當n>2時,可以把n個數據元素分為大致相等的兩半,一半有n/2個數據元素,而另一半有n/2個數據元素。先分別找出各自組中的最大元和最小元,然后將兩個最大元進行比較,就可得n個元素的最大元;將兩個最小元進行比較,就可得n個元素的最小元。

  在規模為n的數據元素集合中找出最大元和最小元, 至少需要3n/2-2次比較,即3n/2-2是找最大最小元算法的下界。當n=2k,或當n≠2k時,若n是若干2的整數冪之和,則算法的時間復雜度仍可達到下界3n/2-2。

a.為一個分治算法編寫偽代碼,該算法同時求出一個n元數組的最大元素和最小元素的值。
b.請拿該算法與解同樣問題的蠻力算法做一個比較。

?

解答:
a.同時求出最大值和最小值,只需要將原數組一分為二,再使用相同的方法找出這兩個部分中的最大值和最小值,然后經過比較就可以得到整個問題的最大值和最小值。

算法 minmax_element(A[l..r], min, max)
// 該算法利用分治技術得到數組A中的最大值和最小值
// 輸入:數值數組A[l..r]
// 輸出:最小值min和最大值max

if(r<0) return;????? // 空數組,沒有最大最小元
if(r==0) max=min=A[0]; // 只有一個元素時
if(r==1) {min=A[0]<=A[1]?A[0]:A[1]; max=A[0]<=A[1]?A[1]:A[0];} ?// 有兩元素時
else
{ ?
  m=int((l+r)/2);?? // 去中間值,把數組分成兩個部分
  minmax_element(l, m,?fMin,?fMax);?? // 遞歸解決前一部分
  minmax_element(m+1, r, sMin,?sMax); // 遞歸解決后一部分
  max= std::max(fMax, sMax); // 從兩部分的兩個最大值中選擇大值
  min= std::min(fMin, sMin); // 從兩部分的兩個最小值中選擇小值
}

?

為了數據類型一般話,我們采用 C++ 的模板。將最小最大數對存儲在 std::pair 類型中。

template<class ForwardIt, class Compare> std::pair<ForwardIt, ForwardIt> minmax_element(ForwardIt first, ForwardIt last, Compare comp) {std::pair<ForwardIt, ForwardIt> result(first, first);if(first == last) return result;if(++first == last) return result;if(comp(*first, *result.first))result.first = first;elseresult.second = first;while(++first != last){ForwardIt i = first;if(++first == last){if(comp(*i, *result.first))result.first = i;else if (!(comp(*i, *result.second)))result.second = i;break;}else{if(comp(*first, *i)){if(comp(*first, *result.first))result.first = first;if(!(comp(*i, *result.second)))result.second = i;}else{if(comp(*i, *result.first))result.first = i;if(!(comp(*first, *result.second)))result.second = first;}}}return result; }

?

時間復雜度為:
t(n)=2*t(n/2)+2 n>2
t(1)=0 t(2)=1
設n=2^k,則n/2=2^(k-1)
t(n)=t(2^k)=2*t[2^(k-1)]+2
=2[2*t(2^(k-2))+2]+2
=2^2*t[2^(k-2))]+2^2+2
=2^2[2*t[2^(k-3)]+2]+2^2+2
=2^3*t[2^(k-3)]+2^3+2^2+2
=...
=2^(k-1)*t(2)+2^(k-1)+2^(k-2)+...+2?? // t(2)=1
=2^(k-1)+2^(k-1)+2^(k-2)+...+2 // 后面部分為等比數列求和
=2^(k-1)+2^k-2??? // 2^(k-1)=n/2, 2^k=n
=n/2+n-2
=3*n/2-2

?

b.蠻力法的算法如下:

算法 simple_minmax(A[0..n])
// 用蠻力法得到數組A的最大值和最小值
// 輸入:數值數組A[l..r]
// 輸出:最小值min和最大值max

max=min=A[0];
for(i=0; i<n; ++i)
{
  if(A[i]>max) max=A[i];
  if(A[i]<min) min=A[i];
}

蠻力算法的時間復雜度t(n)=2*(n-1)

C++ 的頭文件 <algorithm>包含了上面兩種算法。
3*n/2-2 對應 std::minmax_element
2*(n-1) 對應 std::min_element + std::max_element


算法?minmax_element?的時間復雜度為3*n/2-2,simple_minmax?的時間復雜度為2n-2,都屬于Θ(n)復雜度。
但比較可得,minmax_element 減少了不必要的比較
速度上比 simple_minmax?的快一些。

?

轉載于:https://www.cnblogs.com/Martinium/p/minmax_element.html

總結

以上是生活随笔為你收集整理的3*n/2 - 2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天天插天天狠 | www.国产在线 | 泰坦尼克号3小时49分的观看方法 | 桃谷绘里香在线播放 | 成人免费影视网站 | 韩国av一区二区三区 | 第四色视频 | 蜜臀久久99精品久久一区二区 | 天堂中文视频在线 | www国产无套内射com | 欧美午夜激情视频 | 影音先锋波多野结衣 | 杨幂毛片| 潮喷失禁大喷水无码 | 日本理伦片午夜理伦片 | 久久久久久久久久久久久久免费看 | 九九九九九热 | 妺妺窝人体色www聚色窝仙踪 | 香蕉久久一区二区三区 | 激情五月婷婷在线 | 亚洲欧美大片 | 国产精品免费视频一区二区 | 在线观看高h| 四虎网站在线 | 奇米av在线 | 秋霞视频在线 | 欧美熟妇乱码在线一区 | 91影院在线播放 | 亚洲射吧| 成人黄色免费网址 | 久久国产一区二区 | h视频在线免费观看 | 久热久操 | 动漫av网站 | 欧美精品一区在线观看 | 日本久久中文字幕 | 爱情岛论坛av | 国产精品成人3p一区二区三区 | 对白超刺激精彩粗话av | 久久视频热 | 5级黄色片 | 在线看日本 | 国产黄色大片在线观看 | 在线观看亚洲av每日更新 | 国产区小视频 | 秋霞一区二区 | 亚洲精品社区 | www.youjizz国产 | 欧美性受xxxx白人性爽 | 少妇av导航 | 91精品久久久久久 | 清纯粉嫩极品夜夜嗨av | 国产在线激情视频 | 伊人色区| 欧美亚洲在线视频 | 中文字幕日韩一区 | 日韩视频在线免费播放 | 国产精成人品免费观看 | 欧美αv | 网红av在线 | 国产吞精囗交久久久 | 一级不卡毛片 | 国产成人精品一区二区三区免费 | 欧美又粗又深又猛又爽啪啪九色 | 双性受孕h堵精大肚生子 | 美女扒开腿让男人操 | 夫妻性生活自拍 | 久久国产精品免费观看 | 国产一区精品在线 | 欧美一卡二卡三卡 | 97成人资源 | 伊人影院综合 | 日本边添边摸边做边爱 | 国产午夜免费视频 | 欧美亚洲一区二区三区四区 | 欧美国产成人精品一区二区三区 | aaa级黄色片 | 制服下的诱惑暮生 | 国产午夜福利精品 | 五月天黄色小说 | 永久免费未满视频 | 国产l精品国产亚洲区久久 午夜青青草 | 精人妻无码一区二区三区 | 精品一区二区久久久久久久网站 | 日本熟妇乱子伦xxxx | 成人91视频 | av鲁丝一区鲁丝二区鲁丝 | 人人射av | 一区二区在线观看视频 | 在线观看va| 欧美黑人性猛交xxxx | 亚洲精品小视频在线观看 | 日韩毛片一区 | 亚洲婷婷在线视频 | 日本在线三级 | 日韩淫视频 | 香蕉911| 无码人妻精品一区二区三区9厂 | 高潮在线视频 |