简介:
鸡尾酒排序等于是冒泡排序的轻微变形。不同的地方在于从低到高然后从高到低,而冒泡排序则仅从低到高去比较序列里的每个元素。他可以得到比冒泡排序稍微好一点的效能,原因是冒泡排序只从一个方向进行比对(由低到高),每次循环只移动一个项目。
原理:
数组中的数字本是无规律的排放,先找到最小的数字,把他放到第一位,然后找到最大的数字放到最后一位。然后再找到第二小的数字放到第二位,再找到第二大的数字放到倒数第二位。以此类推,直到完成排序。
Java实现:
import java.util.Arrays; import java.util.Scanner; public class cocktailSort { public static int[] cocktailSort(int[] src){ //将最小值排到队尾 for(int i = 0 ; i < src.length/2 ; i++){ for(int j = i ; j < src.length-i-1 ; j++){ if(src[j] < src[j+1]){ int temp = src[j]; src[j] = src[j+1]; src[j+1] = temp; } System.out.println("交换小"+Arrays.toString(src)); } //将最大值排到队头 for(int j = src.length-1-(i+1); j > i ; j--){ if(src[j] > src[j-1]){ int temp = src[j]; src[j] = src[j-1]; src[j-1] = temp; } } } return src; } public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int[] num = new int[n]; for(int i = 0; i < n; i++) { num[i] = in.nextInt(); } num = cocktailSort(num); System.out.println(num); } }