1.概念:
鸡尾酒排序也就是定向冒泡排序, 鸡尾酒搅拌排序, 搅拌排序 (也可以视作选择排序的一种变形), 涟漪排序, 来回排序 or 快乐小时排序, 是冒泡排序的一种变形。此演算法与冒泡排序的不同处在于排序时是以双向在序列中进行排序。
2.原理:
使用鸡尾酒排序为一列数字进行排序的过程.
3.代码:
package com.accp.sort;
import java.util.Comparator;
/**
* 鸡尾酒排序
*
* @author Administrator
*
*/
public class PickMeUp {
public <T extends Comparable<T>> void sort(T[] list) {
boolean b = true;
for (int i = 1; i < list.length; i++) {
b = false;
for (int j = 0; j < list.length - i; j++) {
if (list[j].compareTo(list[j + 1]) > 0) {
T temp = list[j];
list[j] = list[j + 1];
list[j + 1] = temp;
b = true;
}
}
if (b) {
for (int j = list.length - i - 1; j > 0; j--) {
b = true;
if (list[j].compareTo(list[j - 1]) < 0) {
T temp = list[j];
list[j] = list[j - 1];
list[j - 1] = temp;
b = true;
}
}
}
}
}
}
4.与冒泡的区别:
5.复杂度:
鸡尾酒排序最糟或是平均所花费的次数都是O(n2),但如果序列在一开始已经大部分排序过的话,会接近O(n)。