《漫画算法--小灰的算法之旅》
package com.java.sort;
import java.util.Arrays;
// 冒泡排序
public class BubblingSort {
/**
* 冒泡排序
*
* @param array 需要排序的数组
*/
public static void bubbling(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
for (int j = 0; j < array.length - 1 - i; j++) {
if (array[j] > array[j + 1]) {
int temp = array[j + 1]; // 此处定义temp
array[j + 1] = array[j];
array[j] = temp;
}
}
}
}
public static void main(String[] args) {
int[] array = {2, 1, 3, 5, 4, 7, 6};
bubbling(array);
System.out.println(Arrays.toString(array));
}
}
在冒泡的基础之上,书中还介绍一种鸡尾酒排序,鸡尾酒的排序表现为在奇数轮从左到右轮询交换位置,偶数轮从右到左轮询交换位置,代码如下:
package com.java.sort;
import java.util.Arrays;
// 鸡尾酒排序
public class CocktailSort {
/**
* 鸡尾酒排序算法
*
* @param array 需要排序的数组
*/
public static void cocktail(int[] array) {
for (int i = 0; i < array.length / 2; i++) {
boolean isSorted = true;
for (int j = i; j < array.length - 1; j++) {
if (array[j] > array[j + 1]) {
int temp = array[j + 1];
array[j + 1] = array[j];
array[j] = temp;
isSorted = false;
}
}
if (isSorted) {
break;
}
isSorted = true;
for (int j = array.length - 1 - i; j > i; j--) {
if (array[j] < array[j - 1]) {
int temp = array[j - 1];
array[j - 1] = array[j];
array[j] = temp;
isSorted = false;
}
}
if (isSorted) {
break;
}
}
}
public static void main(String[] args) {
int[] array = {2, 3, 4, 0,5, 6, 7, 8, 1};
cocktail(array);
System.out.println(Arrays.toString(array));
}
}