国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 學院 > 開發(fā)設計 > 正文

手把手教你寫一個歸并排序

2019-11-10 20:26:34
字體:
供稿:網(wǎng)友

歸并排序是一個很穩(wěn)定的排序方法,它具有以下特點:  1.時間復雜度為θ(NlogN)(關于時間復雜度的符號表示可以查看《算法導論》第一部分第三/四章),穩(wěn)定而且是比較排序模型中能達到的最快(當然就算換個很舒服的輸入也只能花同樣的時間) 2.它不是一個in place的排序算法。也就是說它的排序需要借助一個臨時數(shù)組來存放數(shù)據(jù)。

算法分析

歸并排序用的是分治法 眾所周知(強行眾所周知)分治法的三個步驟:拆分(母問題為子問題)-解決(子問題)-合并(子問題的解)。歸并排序的這三個步驟描述如下: 拆分:將數(shù)組拆為兩個子數(shù)組(盡量等分) 解決:將兩個子數(shù)組分別排序 合并:此處是歸并排序的重點部分,其思路是這樣的——首先創(chuàng)建一個足以容納下兩個數(shù)組的所有元素的數(shù)列用于儲存數(shù)據(jù),然后對于兩個已經(jīng)排好序的數(shù)列來說,比較其首元素,取小的一方填入新數(shù)列,隨后將新數(shù)列和剛處理的數(shù)列指針后移,然后如此往復,當某一個指針已經(jīng)指向數(shù)組最后一個元素之后時,將另一個數(shù)組中的元素按順序填入新數(shù)組。 不難看出,如果兩子數(shù)列已經(jīng)有序那么最后合并所得的數(shù)列一定是有序的。而當問題被遞歸式地拆分到底(bottom out)時,也就是只有一個元素之后,合并所做的只是將兩個元素按照大小順序填入一個新的只會有兩個元素的數(shù)組。

手把手教你寫代碼

這里就只說C啦,C++的也可以按著寫反正用到的還沒有那么多不同。 首先關于臨時數(shù)組我是這么想的:既然每次都會用到對應大小的數(shù)組,那么干脆就申請一個等大的數(shù)組用于排列,正好序號還能對得上。不過考慮到每次排序完成后是臨時數(shù)組變得有序,所以在排序之后還應有個復制的過程。 因為排序的時候有排序合并兩個操作,所以要有兩個函數(shù)。因為是自己用所以也不用關心越界/錯誤情況,所以返回值用void就好

#include <stdio.h>void mergesort(int *arr,int *tem,int begin,int end);void merge(int *arr,int *tem,int begin,int mid,int end);int main()//再次強調(diào):你可以只寫main()但一定不要寫 void main()!{ int n,i; scanf("%d",&n); int arr[n],tem[n];//C99之后可以用變量作為容量申請數(shù)組了 mergesort(arr,tem,0,n-1); reutnr 0;}

主函數(shù)就完成了,現(xiàn)在我們開始考慮mergesort函數(shù) 傳入以后要判斷是不是已經(jīng)到底了,如果到底我們是需要一個復制的過程,之后會需要遞歸排序,最后用合并函數(shù)。 于是mergesort函數(shù)寫成這樣:

void mergesort(int *arr,int *tem,int begin,int end){ if(begin<end){ int mid=(begin+end)>>1; mergesort(arr,tem,begin,mid); mergesort(arr,tem,mid+1,end); merge(arr,tem,begin,mid,end); }else{ tem[begin]=arr[begin]; }}

現(xiàn)在可以開始merge函數(shù)的編寫了,這也是我認為的歸并排序最難的地方,我理出來的思路是這樣的: 因為最后是有一個復制的過程的,所以指針在開始的時候是不能變的,那么就在開始申請變量賦值用于開始的排序就好。 int *p1=tem+first,*p2=tem+mid+1,*p3=arr+first; 對于是否滿足放入數(shù)組的條件我一開始寫成這樣:

if((p1<tem+mid+1)&&(*p1<*p2))

錯在哪里? 注意如果p2都已經(jīng)到末尾了(越界),這個壞東西還是會判斷后面的垃圾數(shù)據(jù)是不是滿足條件,而我們又都知道C語言的邏輯是存在短路這個東西的,所以最后merge函數(shù)應該長這樣:

void merge(int *arr,int *tem,int first,int mid,int last){ int *p1=tem+first,*p2=tem+mid+1,*p3=arr+first; int i; for(i=0;i<last-first+1;i++){ if((p2>tem+last)||(p1<tem+mid+1)&&(*p1<*p2)){ *(p3++)=*(p1++); }else{ *(p3++)=*(p2++); } }while(first<=last){ *(tem+first)=*(arr+first);//可別忘復制這個操作 first++; }}如果感覺自己明白了,不妨動手試一試寫一個自己的歸并排序吧~
上一篇:SAX解析XML

下一篇:P1996 約瑟夫問題

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
青青草中文字幕| 国产爆初菊在线观看免费视频网站| 永久免费av片在线观看全网站| 国产成人综合美国十次| 精品极品三级久久久久| 在线中文字幕资源| av在线资源网| 国产免费av在线| 国产成免费视频| 超碰在线97国产| 精品无吗乱吗av国产爱色| 亚洲а∨精品天堂在线| 国产秒拍福利视频露脸| 国产成人亚洲精品播放器下载| 国产自产视频| 在线观看av的网站| 福利视频网址导航| 精品一区二区三区在线观看l| 在线一二三区| 国产香蕉视频在线观看| 日本成人网址| 精精国产xxxx视频在线| 国产裸舞福利在线视频合集| 午夜性爽视频男人的天堂| 国产深夜视频在线观看| www.狠狠操.com| 精品麻豆一区二区三区| 国产天堂在线观看| 国产中文字幕在线观看| 91国内精品久久久久| 国产理论电影在线| 免费看的毛片| 青青草免费观看免费视频在线| 中文在线有码| 国产对白在线| 国产成人精品男人的天堂538| 国产美女高潮| 超碰在线国产| 男人操女人免费网站| 在线观看的av网站| 一区二区三区四区在线免费视频| 国产欧美日韩第一页| 国产有码在线| 国产在线观看色| www.91av| 麻豆国产视频| 福利视频网址导航| 成人精品福利| 中文字幕国产视频| 国产黄色av免费看| 精品卡一卡卡2卡3网站| 亚洲精品手机在线| 欧美日韩综合高清一区二区| 日本不卡视频一区二区| 欧美a免费在线| 国产美女福利在线| 国产精品ⅴa有声小说| 精灵使的剑舞无删减版在线观看| 在线视频中文字幕| 精品国产高清自在线一区二区三区 | 国产一级片在线播放| 国产女人在线观看| 国产一级在线观看www色| 国产福利小视频在线| 在线午夜视频| 青青国产在线| 国产网站av| 在线天堂中文www视软件| 欧洲一区av| 国产黄色大片在线观看| 天天插天天干| 国产精品久久麻豆| 青青久草在线| 69日小视频在线观看| 九九热视频在线| 精品女厕厕露p撒尿| 国产免费高清| 亚洲精品乱码电影在线观看| 国产精品亚洲色图| www狠狠操| 91在线网址| 尤物视频在线看| xxxx视频在线| 在线视频观看亚洲| 国产区视频在线| 懂色一区二区三区| 欧美在线中文| 人人在线视频| 亚洲视频在线网| 精品极品三级久久久久| 二人午夜免费观看在线视频| 四虎成年永久免费网站| 国产激情自拍| 综合图区亚洲白拍在线| 九九在线观看免费视频| 日本免费视频www| 国产激情在线| 国产三线在线| 国产香蕉视频在线观看| 大香伊人久久| 中文字幕在线视频观看| 国内外激情在线| 九九热在线视频免费观看| wwwww亚洲| 欧美日韩不卡中文字幕在线| 日本久久网站| 久久一本精品| 国产免费福利网站| 99视频免费| 国产精品久久精品牛牛影视| 国产精品伦一区二区三区视频| 亚洲成人av在线影院| 国产精品欧美色图| 精品伦理一区二区| 欧美日韩一区二区三区在线播放 | 国产在线一二| 成年网在线观看免费观看网址| 麻豆精品永久免费视频| 国产美女在线一区二区三区| 国产精品亚洲色图| 尤物在线视频观看| eeuss影院www在线播放| 99福利在线| 国产免费网址| aaa大片在线观看| www.亚洲视频| 国产一二区视频| 国产porny蝌蚪视频| 亚洲wwwwww| 国产一级在线观看| 色吊丝av中文字幕| 国产一区二区三区不卡在线| 在线亚洲精品自拍| 国产精品一区二区三区高清在线 | 国产精品秘入口| 免费在线看v| 国产人成在线视频| 香蕉视频在线看| 国产一卡二卡3卡4卡四卡在线| 99色在线观看| 日本中文字幕在线视频| 思思99精品视频在线观看| 尤物视频在线免费观看| 天堂√中文在线| 国产精品国产国产aⅴ| 黄色片av在线| а√最新版地址在线天堂| 国产www网站| 国产精品白浆流出视频| eeuss影院www在线播放| 精品国产福利一区二区在线| 国产视频中文字幕| 国产麻豆一区二区三区精品| 男人天堂网在线观看| 四虎影视成人永久免费观看视频| 国产区在线看| 99视频在线观看地址| 国产精品一品| 午夜视频在线免费| 日本中文字幕高清视频| 国产美女在线免费观看| 大香伊人久久| 中文字幕在线视频观看| 中文字幕在线永久在线视频| 日本在线观看网站| 欧美96在线| 国产永久免费高清在线观看视频| 超碰免费在线播放| 国产美女高潮| 国产黄色一级片| 97人人在线| 日本黄在线观看| 国产原创在线播放| 国产欧美日韩精品综合| 91中文字幕网| www.av在线| 国产在线视频自拍| 国产黄色大片在线观看| av在线1区2区| 超碰在线网址| 国产三级av在线| 亚洲免费国产| 国产视频一二三区| 亚洲一本大道| 高潮毛片在线观看| 国产福利在线视频| 牛牛在线精品视频| 国产网站av| 狠狠操天天操夜夜操| 91精选福利| 福利视频网址导航| av网站大全在线| 国产一区二区在线|播放| 在线免费看av| 懂色一区二区三区| 日韩国产成人| 影音先锋中文字幕在线| 天天爱天天色| 免费看的毛片| av在线播放av|