import java.util.Arrays;
/**
* @author lizz
* @ClassName BubbleSort.java
* @Description 鸡尾酒排序
* 排序过程像钟摆一样,第一轮从左到右,第二轮从右到左,第三轮从左到右
* @createTime 2022年04月21日 10:39:00
*/
public class CocktailSort {
/**
* 冒泡排序第一版
* @param arr 要排序的数组
* @return
*/
public static int[] sort(int[] arr){
int temp = 0;
for (int i = 0; i < arr.length/2; i++) {
//有序标记,每一轮的初始值都是true
boolean isSorted = true;
//奇数轮,从左到右比较和交换
for (int j = i; j < arr.length-i-1; j++) {
if(arr[j] > arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
//有元素交换 ,不是有序的,改为false
isSorted = false;
}
}
if(isSorted){
break;
}
//在偶数轮之前,将isSorted 标为true
isSorted = true;
//偶数轮,从右向左比较大小和交换
for (int j = arr.length-i-1; j >i ; j--) {
if(arr[j] < arr[j-1]){
temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
//有元素交换 ,不是有序的,改为false
isSorted = false;
}
}
if(isSorted){
break;
}
}
return arr;
}
public static void main(String[] args) {
CocktailSort bubbleSort = new CocktailSort();
System.out.println(Arrays.toString(bubbleSort.sort(new int[]{10,3,5,2,7,1})) );
System.out.println(Arrays.toString(bubbleSort.sort(new int[]{5,8,6,3,9,2,1,7})));
}
}
09-09
268
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交