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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

漫画:什么是鸡尾酒排序

發布時間:2023/12/3 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 漫画:什么是鸡尾酒排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自? ?漫畫:什么是雞尾酒排序

那么,雞尾酒排序又是何方神圣呢?我們這一期將會詳細講述。

讓我們首先來回顧一下冒泡排序的思想:

冒泡排序的每一個元素都可以像小氣泡一樣,根據自身大小,一點一點向著數組的一側移動。算法的每一輪從都是從左到右比較元素,進行單向的位置交換

那么雞尾酒排序做了怎樣的優化呢?

雞尾酒排序的元素比較和交換過程是雙向的。

讓我們來舉一個栗子:

有8個數組成一個無序數列:2,3,4,5,6,7,8,1,希望從小到大排序。

如果按照冒泡排序的思想,排序的過程是什么樣呢?

第一輪結果(8和1交換)

第二輪結果(7和1交換)

?

第三輪結果(6和1交換)

?

第四輪結果(5和1交換)

第五輪結果(4和1交換)

?

第六輪結果(3和1交換)

第七輪結果(2和1交換)

?

雞尾酒排序是什么樣子呢?讓我們來看一看詳細過程:

第一輪(和冒泡排序一樣,8和1交換)

第二輪

此時開始不一樣了,我們反過來從右往左比較和交換:

8已經處于有序區,我們忽略掉8,讓1和7比較。元素1小于7,所以1和7交換位置:

接下來1和6比較,元素1小于6,所以1和6交換位置:
??

接下來1和5比較,元素1小于5,所以1和5交換位置:

?

接下來1和4交換,1和3交換,1和2交換,最終成為了下面的結果:

?

第三輪(雖然已經有序,但是流程并沒有結束)

雞尾酒排序的第三輪,需要重新從左向右比較和交換:

1和2比較,位置不變;2和3比較,位置不變;3和4比較,位置不變......6和7比較,位置不變。

沒有元素位置交換,證明已經有序,排序結束。

這就是雞尾酒排序的思路。排序過程就像鐘擺一樣,第一輪從左到右,第二輪從右到左,第三輪再從左到右......

?

?

public class CockTailSort {private static void sort(int array[]){int tmp ?= 0;for(int i=0; i<array.length/2; i++)?{//有序標記,每一輪的初始是trueboolean isSorted = true;//奇數輪,從左向右比較和交換for(int j=i; j<array.length-i-1; j++){if(array[j] > array[j+1]){tmp = array[j];array[j] = array[j+1];array[j+1] = tmp;//有元素交換,所以不是有序,標記變為falseisSorted = false;}}if(isSorted){break;}//偶數輪之前,重新標記為trueisSorted = true;//偶數輪,從右向左比較和交換for(int j=array.length-i-1; j>i; j--)?{if(array[j] < array[j-1]){tmp = array[j];array[j] = array[j-1];array[j-1] = tmp;//有元素交換,所以不是有序,標記變為falseisSorted = false;}}if(isSorted){break;}} }public static void main(String[] args){int[] array = new int[]{2,3,4,5,6,7,8,1};sort(array);System.out.println(Arrays.toString(array)); } }

這段代碼是雞尾酒排序的原始實現。代碼外層的大循環控制著所有排序回合,大循環內包含兩個小循環,第一個循環從左向右比較并交換元素,第二個循環從右向左比較并交換元素。

?

?

?

讓我們來回顧一下冒牌排序針對有序區的優化思路:

?

原始的冒泡排序,有序區的長度和排序的輪數是相等的。比如第一輪排序過后的有序區長度是1,第二輪排序過后的有序區長度是2 ......

要想優化,我們可以在每一輪排序的最后,記錄下最后一次元素交換的位置,那個位置也就是無序數列的邊界,再往后就是有序區了。

對于單向的冒泡排序,我們需要設置一個邊界值,對于雙向的雞尾酒排序,我們需要設置兩個邊界值。請看代碼:

public class CockTailSort {private static void sort(int array[]){int tmp ?= 0;//記錄右側最后一次交換的位置int lastRightExchangeIndex = 0;//記錄左側最后一次交換的位置int lastLeftExchangeIndex = 0;//無序數列的右邊界,每次比較只需要比到這里為止int rightSortBorder = array.length - 1;//無序數列的左邊界,每次比較只需要比到這里為止int leftSortBorder = 0;for(int i=0; i<array.length/2; i++){//有序標記,每一輪的初始是trueboolean isSorted = true;//奇數輪,從左向右比較和交換for(int j=leftSortBorder; j<rightSortBorder; j++){if(array[j] > array[j+1]){tmp = array[j];array[j] = array[j+1];array[j+1] = tmp;//有元素交換,所以不是有序,標記變為falseisSorted = false;lastRightExchangeIndex = j;}}rightSortBorder = lastRightExchangeIndex;if(isSorted){break;}//偶數輪之前,重新標記為trueisSorted = true;//偶數輪,從右向左比較和交換for(int j=rightSortBorder; j>leftSortBorder; j--){if(array[j] < array[j-1]){tmp = array[j];array[j] = array[j-1];array[j-1] = tmp;//有元素交換,所以不是有序,標記變為falseisSorted = false;lastLeftExchangeIndex = j;}}leftSortBorder = lastLeftExchangeIndex;if(isSorted){break;}} }public static void main(String[] args){int[] array = new int[]{2,3,4,5,6,7,8,1};sort(array);System.out.println(Arrays.toString(array)); } }

代碼中使用了左右兩個邊界值,rightSortBorder 代表右邊界,leftSortBorder代表左邊界。?

在比較和交換元素時,奇數輪從?leftSortBorder?遍歷到?rightSortBorder?位置,偶數輪從?rightSortBorder 遍歷到?leftSortBorder 位置。

??

??

????

?

?

?

總結

以上是生活随笔為你收集整理的漫画:什么是鸡尾酒排序的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 521av在线 | av在线免费不卡 | 久色视频在线观看 | 国产欧美综合一区二区三区 | 美女av网站| 久久亚洲精品国产精品黑人v | 日日操日日射 | 波多野结衣一区二区在线 | 欧美射射射 | 亚州中文字幕 | 美国毛片基地 | 丝袜 中出 制服 人妻 美腿 | 91香蕉视频官网 | 日本在线观看一区二区 | 欧美作爱视频 | 香蕉网久久 | 麻豆成人av | 国产精品国产三级国产专区51区 | 强伦人妻一区二区三区 | 美女黄站 | 日韩一区二区三区在线视频 | 精品少妇人妻av一区二区 | 婷婷五月综合激情 | 免费久久一级欧美特大黄 | 国产黄色免费在线观看 | 亚洲欧美日韩天堂 | 亚洲欧美91 | 欧洲av片 | 国产精品传媒一区二区 | 啪啪一区二区 | 亚洲成人网络 | 中文字幕网伦射乱中文 | 久久综合桃花网 | 国产精品久久久久久久无码 | 久久久人妻无码一区二区 | a毛片毛片av永久免费 | 激情免费av | av不卡免费| 作爱视频在线 | 亚洲精品一区二区三区精华液 | 国产在线你懂得 | 91欧美在线 | 欧美性极品少妇xxxx | 最近2019中文字幕大全第二页 | 免费国产区 | 99精品久久毛片a片 成人网一区 | 日韩中文字幕av电影 | 射美女| 麻豆精品自拍 | 91久久精品www人人做人人爽 | 色偷偷噜噜噜亚洲男人的天堂 | 欧美xxxxbbb | 精品美女www爽爽爽视频 | 精品国产乱码久久久久久88av | 99这里只有 | 丰满少妇高潮久久三区 | 合欢视频在线观看 | 肉体粗喘娇吟国产91 | 亚洲欧美黄色片 | 99re在线观看 | 3344成人| www青青草| 久久精品99久久久久久久久 | 日本一区二区在线免费观看 | 神马久久久久久久 | 福利视频免费 | 亚洲成人网在线播放 | 中文在线免费视频 | 香蕉视频黄色在线观看 | 亚洲va欧美va国产综合久久 | 国产精品3p视频 | 国产精品成人网站 | 色中色av| 可以免费观看的av网站 | 国产传媒一区二区三区 | 欧美日韩一区二区三区四区五区 | 国产精品外围 | 好吊色一区二区 | 日韩精品免费一区二区在线观看 | 国内成人在线 | 538国产精品一区二区免费视频 | 抽插丰满内射高潮视频 | 狠狠撸在线视频 | 成人网入口 | 久久久久久婷 | 成人影院免费 | 精品无码一级毛片免费 | 殴美一区二区 | 蜜桃9999| 中文有码一区 | 巨乳中文字幕 | 99精品视频免费在线观看 | 成人激情四射 | 久久久精品国产sm调教网站 | 97碰碰碰| 蜜臀av性久久久久蜜臀aⅴ四虎 | 午夜手机福利 | 日韩 欧美 亚洲 国产 | 成人毛片av |