欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

web開發(fā)中冒泡排序是什么意思

這篇文章將為大家詳細(xì)講解有關(guān)web開發(fā)中冒泡排序是什么意思,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)公司主要從事做網(wǎng)站、網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)湯陰,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792

冒泡排序介紹    

冒泡排序一種簡(jiǎn)單的排序算法。它會(huì)遍歷若干次要排序的數(shù)列,每次遍歷時(shí),它都會(huì)從前往后依次的比較相鄰兩個(gè)數(shù)的大小;如果前者比后者大,則交換它們的位置。這樣,一次遍歷之后,最大的元素就在數(shù)列的末尾! 采用相同的方法再次遍歷時(shí),第二大的元素就被排列在最大元素之前。重復(fù)此操作,直到整個(gè)數(shù)列都有序?yàn)橹梗?/p>

冒泡排序圖解    

下面以數(shù)列{20,40,30,10,60,50}為例,演示它的冒泡排序過程(如下圖)。

web開發(fā)中冒泡排序是什么意思

我們首先分析第一趟排序:

  • 當(dāng)i=5,j=0時(shí),a[0]<a[1]。此時(shí),不做任何處理!

  • 當(dāng)i=5,j=1時(shí),a[1]>a[2]。此時(shí),交換a[1]和a[2]的值;交換之后,a[1]=30,a[2]=40。

  • 當(dāng)i=5,j=2時(shí),a[2]>a[3]。此時(shí),交換a[2]和a[3]的值;交換之后,a[2]=10,a[3]=40。

  • 當(dāng)i=5,j=3時(shí),a[3]<a[4]。此時(shí),不做任何處理!

  • 當(dāng)i=5,j=4時(shí),a[4]>a[5]。此時(shí),交換a[4]和a[5]的值;交換之后,a[4]=50,a[3]=60。

第一趟排完之后,最大元素60移到數(shù)組最后了,也就是a[5]此時(shí)為數(shù)組中最大的元素,再進(jìn)行第二趟排序的時(shí)候,只需按照上面的方法排前面5個(gè)元素就可以了。這樣:

第2趟排序完之后,數(shù)列中a[4]、a[5]是有序的。
第3趟排序完之后,數(shù)列中a[3]、a[4]、a[5]是有序的。
第4趟排序完之后,數(shù)列中a[2]、[3]、a[4]、a[5]是有序的。
第5趟排序完之后,數(shù)列中a[1]、a[2]、[3]、a[4]、a[5]是有序的。

第5趟排序之后,整個(gè)數(shù)列也就是有序的了。

冒泡排序算法實(shí)現(xiàn)    

根據(jù)上面流程,不難寫出冒泡排序的代碼實(shí)現(xiàn),此處是按升序排列。

void bubble_sort(int a[], int n)
{int i,j;for (i=n-1; i>0; i--){// 將a[0...i]中最大的數(shù)據(jù)放在末尾for (j=0; j<i; j++){if (a[j] > a[j+1])swap(a[j], a[j+1]);}}
}

其實(shí)觀察上面例子冒泡排序的流程圖,第3趟排序之后,數(shù)據(jù)已經(jīng)是有序的了;第4趟和第5趟并沒有進(jìn)行數(shù)據(jù)交換。因此可以對(duì)冒泡排序進(jìn)行優(yōu)化,使它效率更高一些:添加一個(gè)標(biāo)記,如果一趟遍歷中發(fā)生了交換,則標(biāo)記為true,否則為false。如果某一趟沒有發(fā)生交換,說明排序已經(jīng)完成,退出。優(yōu)化后的代碼如下:

void bubble_sort2(int a[], int n)
{int i,j;int flag;     // 標(biāo)記一趟是否發(fā)生交換for (i=n-1; i>0; i--){flag = 0;     // 初始化標(biāo)記為0// 將a[0...i]中最大的數(shù)據(jù)放在末尾for (j=0; j<i; j++){if (a[j] > a[j+1]){swap(a[j], a[j+1]);flag = 1; //發(fā)生交換,設(shè)flag為1}}if (flag==0)break; // 若無交換,說明數(shù)列已有序}
}
冒泡排序時(shí)間空間復(fù)雜度    

冒泡排序的時(shí)間復(fù)雜度是O(N2):假設(shè)被排序的數(shù)列中有N個(gè)數(shù)。遍歷一趟的時(shí)間復(fù)雜度是O(N),需要遍歷多少次呢?N-1次!因此,冒泡排序的時(shí)間復(fù)雜度O(N2)。

冒泡排序是穩(wěn)定的算法:它滿足穩(wěn)定算法的定義;所謂算法穩(wěn)定性指的是對(duì)于一個(gè)數(shù)列中的兩個(gè)相等的數(shù)a[i]=a[j],在排序前,a[i]在a[j]前面,經(jīng)過排序后a[i]仍然在a[j]前,那么這個(gè)排序算法是穩(wěn)定的。

關(guān)于“web開發(fā)中冒泡排序是什么意思”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

網(wǎng)站題目:web開發(fā)中冒泡排序是什么意思
鏈接URL:http://chinadenli.net/article28/ihccjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃網(wǎng)站設(shè)計(jì)公司、軟件開發(fā)外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作