概念:依次比較相鄰的兩個數,將小數放在前面,大數放在後面;第一趟可得到:將最大數放到最後一位,第二趟可得到:將第二大的數放到倒數第二位,如此下去,重複以上過程,直至最終完成排序。 由於排序過程中,總是將小數往前放,大數往後放,相當於氣泡往上公升,所以稱作氣泡排序。
思路:用二重迴圈實現,外迴圈變數設為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...