鸡尾酒排序算法

简介:

鸡尾酒排序等于是冒泡排序的轻微变形。不同的地方在于从低到高然后从高到低,而冒泡排序则仅从低到高去比较序列里的每个元素。他可以得到比冒泡排序稍微好一点的效能,原因是冒泡排序只从一个方向进行比对(由低到高),每次循环只移动一个项目。

原理:

数组中的数字本是无规律的排放,先找到最小的数字,把他放到第一位,然后找到最大的数字放到最后一位。然后再找到第二小的数字放到第二位,再找到第二大的数字放到倒数第二位。以此类推,直到完成排序。


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);
		
		
	}

}


猜你喜欢

转载自blog.csdn.net/lyp_1020k/article/details/79666079