氣泡排序案例,雞尾酒排序

2021-09-24 08:34:34 字數 1400 閱讀 5819

概念:依次比較相鄰的兩個數,將小數放在前面,大數放在後面;第一趟可得到:將最大數放到最後一位,第二趟可得到:將第二大的數放到倒數第二位,如此下去,重複以上過程,直至最終完成排序。 由於排序過程中,總是將小數往前放,大數往後放,相當於氣泡往上公升,所以稱作氣泡排序。

思路:用二重迴圈實現,外迴圈變數設為i,內迴圈變數設為j。如果陣列裡有10個數,外迴圈重複9次,內迴圈依次重複9,8,...,1次。每次進行比較的兩個元素都是與內迴圈j有關的,它們可以分別用a[j]和a[j+1]標識,i的值依次為1,2,...,9,對於每乙個i, j的值依次為1,2,...10-i。

public class test ;

//外層迴圈控制排序趟數

for (int i = 0; i < arr.length - 1; i++) }}

system.out.print("排序後陣列為:");

for (int i : arr)

system.out.print("排序後陣列為:");

for (int i = 0; i < arr.length ; i++) }}

複製**

概念:也就是定向氣泡排序,也叫攪拌排序、來回排序。

雞尾酒排序等於氣泡排序的輕微變形,不同的地方在於從低到高然後從高到低,而氣泡排序則僅從低到高去比較序列裡的每個元素。他可以得到比氣泡排序稍微好一點的效能,原因是氣泡排序只從乙個方向進行比對(由低到高),每次迴圈只移動乙個專案。

以序列(2,3,4,5,1)為例,雞尾酒排序只需要訪問兩次(公升序降序各一次)次序列就可以完成排序,但如果使用氣泡排序則需要四次。

思路:雞尾酒排序的過程為:

(1)先對陣列從左到右進行氣泡排序(公升序),則最大的元素去到最右端;

(2)再對陣列從右到左進行氣泡排序(降序),則最小的元素去到最左端。以此類推,依次改變冒泡的方向,並不斷縮小未排序元素的範圍。

public class testsort ;

cocktailsort(s);

for (int i : s)

}static void cocktailsort(int arr)

}right--;

for (i = right; i > left; i--)

}left++;}}

}複製**

public class testsort }}

system.out.println(list);

system.out.println("***********************");

for (int i = 0; i < list.size() - 1; i++) }}

for (integer integer : list)

}}複製**

氣泡排序 雞尾酒排序

include 交換函式 void swap int a,int i,int j 列印陣列 void printa int a,int len printf n 氣泡排序 int main1 int len sizeof a sizeof a 0 int i,j 外層迴圈控制輪數,每一輪找出乙個最大...

雞尾酒排序

氣泡排序是從陣列的一側到另一側為一輪,根據條件兩兩交換,例如關於氣泡排序中的一組資料3 2 5 4 6 1 8 9 7,優化的氣泡排序在經過六輪之後得到排好的陣列,而雞尾酒排序是一輪次比較兩回 先從左到右比較,如果左邊比右面大,交換位置 然後從右到左比較,左邊比右邊大,交換位置。就用冒泡中的那組數從...

雞尾酒排序

雞尾酒排序是一種定向的氣泡排序,也可以稱為攪拌排序 漣漪排序。是氣泡排序的一種變形。和氣泡排序的區別在於,雞尾酒排序採用了雙向比較並替換的原理。基本原理 第一步 宣告兩個臨時指標left和right,分別指向第乙個元素和最後乙個元素。第二步 每一輪比較時,從right往left方向查詢最大數,放到r...