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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

理论基础 —— 排序 —— 鸡尾酒排序

發(fā)布時(shí)間:2025/3/17 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 理论基础 —— 排序 —— 鸡尾酒排序 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

【概述】

雞尾酒排序也稱定向冒泡排序,是一種穩(wěn)定的排序方法,其是原始冒泡排序的改進(jìn),也是交換排序的一種。

定向冒泡排序與冒泡排序的不同在于其從低到高比較,然后再?gòu)母叩降捅容^,如此循環(huán)往復(fù),直到序列有序,而冒泡排序僅是從低到高的去比較序列中的每個(gè)元素。

其實(shí)現(xiàn)借助兩個(gè)指針來(lái)完成,一個(gè)作為頭指針,負(fù)責(zé)從前向后掃描,一個(gè)作為尾指針,負(fù)責(zé)從后向前掃描,外層循環(huán)依靠指針控制數(shù)組左右邊界,內(nèi)層循環(huán)分別控制前后邊界的排序。

【過程】

初始關(guān)鍵字: ?『?6,5,3,1,8,7,2,4 ?』

第一趟排序: ?『?65,3,1,8,7,2,4 ?』

?? ? ? ? ? ? ? ? ? ? ? ?5,『?63,1,8,7,2,4』

?? ? ? ? ? ? ? ? ? ? ? ?5,3,『?61,8,7,2,4』

?? ? ? ? ? ? ? ? ? ? ? ?5,3,1,『?68,7,2,4』

?? ? ? ? ? ? ? ? ? ? ? ?5,3,1,6,『?87,2,4』

?? ? ? ? ? ? ? ? ? ? ? ?5,3,1,6,7,『?82,4』

?? ? ? ? ? ? ? ? ? ? ? ?5,3,1,6,7,2,『?84

?? ? ? ? ? ? ? ? ? ? ? ?5,3,1,6,7,2,4,『?8

第二趟排序:『?5,3,1,6,7,24,8

?? ? ? ? ? ? ? ? ? ? ?『 5,3,1,6,72,4,8

?? ? ? ? ? ? ? ? ? ? ?『 5,3,1,627,4,8

?? ? ? ? ? ? ? ? ? ? ?『 5,3,12,6,7,4,8

?? ? ? ? ? ? ? ? ? ? ?『 5,312,6,7,4,8

?? ? ? ? ? ? ? ? ? ? ?512,3,6,7,4,8

?? ? ? ? ? ? ? ? ? ? ?『 12,5,3,6,7,4,8

第三趟排序: 125,3,6,7,48

???????????????????????12,53,6,7,48

???????????????????????123,56,7,48

???????????????????????1,2,3,5,67,48

???????????????????????1,2,3,5,6,748

???????????????????????1,2,3,5,6,4,78

第四趟排序: 12,3,5,647,8

???????????????????????12,3,54,6,7,8

???????????????????????12,34,5,6,7,8

???????????????????????123,4,5,6,7,8

???????????????????????12,3,4,5,6,7,8

第五趟排序: 1,234,5,67,8

? ? ? ? ? ? ? ? ? ? ? ?1,2,3,4567,8

? ? ? ? ? ? ? ? ? ? ? ?1,2,3,4,567,8

? ? ? ? ? ? ? ? ? ? ? ?1,2,3,4,567,8

第六趟排序: 1,2,3456,7,8

? ? ? ? ? ? ? ? ? ? ? ?1,2,34,56,7,8

? ? ? ? ? ? ? ? ? ? ? ?1,2,34,56,7,8

第七趟排序:??1,2,3,456,7,8

結(jié)果: ??『??1,2,3,4,5,6,7,8 ?』

?????

? ? ? ? ? ? ? ? ? ? ? ?宏觀過程

【時(shí)空復(fù)雜度分析】

最好的情況,是要排序的表本身就是有序的,只需要進(jìn)行 n-1 次比較,沒有數(shù)據(jù)交換,因此最優(yōu)時(shí)間復(fù)雜度為 O(n)

最壞的情況,是要排序的表是逆序的情況,因此供需比較 n(n-1)/2 次,并作等數(shù)量級(jí)的記錄移動(dòng),因此最壞時(shí)間復(fù)雜度為 O(n^2)

而在平均情況下,時(shí)間復(fù)雜度與最壞時(shí)間復(fù)雜度同數(shù)量級(jí),即平均時(shí)間復(fù)雜度為 O(n^2)

此外,定向冒泡排序僅需一個(gè)輔助空間,用于作記錄交換的暫存單元,即空間復(fù)雜度為 O(1)

【源程序】

void cocktailSort(int a[],int n){int left=1,right=n;while(left<right){/*前半輪,將最大元素放到后面*/for(int i=left;i<right;i++)if(a[i]>a[i+1])swap(a[i],a[i+1]);right--;/*后半輪,將最小元素放到前面*/for(int i=right;i>left;i--)if(a[i-1]>a[i])swap(a[i],a[i-1]);left++;} }

總結(jié)

以上是生活随笔為你收集整理的理论基础 —— 排序 —— 鸡尾酒排序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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