`
Callan
  • 浏览: 735865 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

鸡尾酒排序

    博客分类:
  • Java
阅读更多

 也就是定向冒泡排序, 鸡尾酒搅拌排序, 搅拌排序 (也可以视作选择排序的一种变形), 涟漪排序, 来回排序 or 快乐小时排序, 是冒泡排序的一种变形。此演算法与冒泡排序的不同处在于排序时是以双向在序列中进行排序。

 

 

public class Cocktail {
	int[] list = {88,23,1,23,2,9,10};
	
	void sort(){
		int length = list.length;
		boolean flag=true;
		while(flag){
			flag=false;
			for(int i = 0 ; i < length-1;i++){  //从低处往高处比较
				if(list[i]>list[i+1]){
					int temp = list[i];
					list[i] = list[i+1];
					list[i+1]= temp;
					
					flag = true;
				}
			}
			length--;
			for(int i = length-1; i > 0; i--){   //从高处往低处比较

				if(list[i]<list[i+1]){
					int temp = list[i];
					list[i] = list[i-1];
					list[i-1]= temp;
					flag = true;
				}
			}
		}
	}
	
	void print(){
		for(int i = 0 ; i < list.length ;i++){
			System.out.println(list[i]);
		}
	}
	public static void main(String[] args) {
		Cocktail c = new Cocktail();
		c.sort();
		c.print();
	}
}

 

 

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

  以序列(2,3,4,5,1)为例,鸡尾酒排序只需要访问一次序列就可以完成排序,但如果使用冒泡排序则需要四次。

  复杂度

  鸡尾酒排序最糟或是平均所花费的次数都是O(n2),但如果序列在一开始已经大部分排序过的话,会接近O(n)。

分享到:
评论

相关推荐

    易语言鸡尾酒排序

    鸡尾酒排序,又称 bidirectional bubble sort 或 cocktail sort,是一种基于冒泡排序的优化算法。在冒泡排序中,元素是按照从最小到最大的顺序逐渐“浮”到数组的前端,而鸡尾酒排序则通过从一端到另一端来回遍历...

    c++鸡尾酒排序算法yu

    鸡尾酒排序,也称为双向冒泡排序,是一种基于冒泡排序的优化算法。冒泡排序的基本思想是通过相邻元素之间的比较和交换,将较大的元素逐渐“冒”到数组的末尾。而鸡尾酒排序则在此基础上进行了改进,它不仅从左向右...

    易语言源码易语言鸡尾酒排序源码.rar

    易语言源码易语言鸡尾酒排序源码.rar 易语言源码易语言鸡尾酒排序源码.rar 易语言源码易语言鸡尾酒排序源码.rar 易语言源码易语言鸡尾酒排序源码.rar 易语言源码易语言鸡尾酒排序源码.rar 易语言源码易语言鸡尾...

    算法-理论基础- 排序- 鸡尾酒排序(包含源程序).rar

    鸡尾酒排序,又称 bidirectional bubble sort 或者 cocktail sort,是一种变形的冒泡排序算法,因其在排序过程中,数据在数组两端来回扫动,如同调制鸡尾酒时酒液在杯中摇晃,故得此名。在这个压缩包文件中,你将...

    十大基本排序,堆排序,归并排序,鸡尾酒排序,计数排序,基数排序等

    鸡尾酒排序是冒泡排序的一个变种,它不仅从左向右比较和交换相邻元素,还从右向左进行一次遍历。这种双向遍历的方式有助于减少数据的移动次数。 #### C++ 实现 `Cocktail`函数实现了鸡尾酒排序的基本逻辑。 ```...

    java交换排序之鸡尾酒排序实现方法

    鸡尾酒排序,又称定向冒泡排序、搅拌排序或涟漪排序,是冒泡排序的一种改进版。它的基本思想是从序列的一端开始,按照升序排列元素,然后从另一端开始,按照降序排列,如此反复,直到整个序列有序。这种排序方式类似...

    易语言鸡尾酒排序源码-易语言

    鸡尾酒排序,又称“震波排序”或“摇摆排序”,是一种变种的冒泡排序算法。在易语言中实现鸡尾酒排序,可以帮助初学者深入理解排序算法的原理和易语言编程技巧。易语言作为一款中国自主研发的编程语言,以其独特的...

    java数据结构算法 冒泡 选择 鸡尾酒 插入 快速 排序算法

    本资源包涵盖了五种常见的排序算法:冒泡排序、选择排序、鸡尾酒排序(又称双向冒泡排序)、插入排序以及快速排序。这些排序算法在实际编程中有着广泛的应用,尤其是在处理大量数据时,了解并熟练掌握它们的原理和...

    冒泡排序改进算法 /鸡尾酒算法

    为了提高冒泡排序的效率,人们提出了多种改进算法,其中鸡尾酒排序(Cocktail Sort,又称双向冒泡排序)是一种常见的优化策略。 鸡尾酒排序的基本思想是在排序过程中,不仅从左向右进行比较和交换,还会从右向左...

    c#冒泡,选择,鸡尾酒,插入,希尔等排序方法

    本资源集成了五种经典的排序算法:冒泡排序、选择排序、鸡尾酒排序(也称作双向冒泡排序)、插入排序以及希尔排序。以下是对这些排序方法的详细说明: 1. **冒泡排序**: 冒泡排序是一种简单的排序算法,通过重复...

    排序算法总结

    【排序算法总结】 排序算法是计算机科学中基础且重要的算法之一,它们用于组织和整理数据,使其按照特定的顺序排列。在IT领域的面试中,掌握各种排序算法的原理和实现方式是十分必要的。以下是几种常见的排序算法的...

    python 实现 排序 课程设计 代码

    鸡尾酒排序(Cocktail Shaker Sort) 梳排序(Comb Sort) 计数排序(Counting Sort) 循环排序(Cycle Sort) 双重排序(Double Sort) 荷兰国旗排序(Dutch National Flag Sort) 交换排序(Exchange Sort) 外部...

    c#实现基本排序算法

    本文将详细探讨C#语言中实现的几种基本排序算法,包括冒泡排序、鸡尾酒排序(双向冒泡)、选择排序、插入排序、希尔排序、堆排序和归并排序。 首先,我们来看**冒泡排序**,它是最简单的排序算法之一。通过不断交换...

    经典算法的C#源码实现

    经典排序算法 - 鸡尾酒排序Cocktail sort 经典排序算法 - 希尔排序Shell sort 经典排序算法 - 堆排序Heap sort序 经典排序算法 - 地精排序Gnome Sort 经典排序算法 - 奇偶排序Odd-even sort 经典排序算法 - 梳...

    内部排序小结 包括几乎所有的内部排序算法

    5. 冒泡排序(Bubble Sort)和鸡尾酒排序(Cocktail Sort):两者都是稳定的排序算法,时间复杂度为O(n^2)。冒泡排序通过相邻元素的交换逐步将最大(或最小)元素移到序列末尾。鸡尾酒排序是冒泡排序的变种,双向...

    python 实现冒泡排序

    鸡尾酒排序在每一轮中,先从左到右比较,如果发现逆序则交换,然后从右到左再进行一次比较,同样发现逆序就交换。这个过程就像调制鸡尾酒一样,来回“搅拌”数组,直到所有元素都排序完毕。 总结起来,冒泡排序的...

    基于Python的冒泡排序算法详解与优化

    内容概要:本文详细介绍了冒泡排序算法的基本概念及其Python代码实现,重点解释了算法的基本步骤,以及常见的优化手段,如设置标志位和鸡尾酒排序。冒泡排序的时间复杂度为O(n²),适用于小规模的数据排序。 适用...

    CockSort_hidden1yi_C#_

    鸡尾酒排序,又称冒泡排序的变种,是一种简单但效率相对较低的排序算法。在C#编程语言中实现鸡尾酒排序,主要是通过数组操作来完成元素的比较和交换。这种排序方法的特点是从数组的一端开始,将较大的元素向数组另...

Global site tag (gtag.js) - Google Analytics