- 浏览: 118950 次
- 性别:
- 来自: 湖南
文章分类
最新评论
-
一步一个天涯:
good.
tomcat配置热启动,我试过有用的方式 -
yuechen323:
哥们!!看了你博客的大部分文章,写的都非常的通俗易懂,谢谢~ ...
我在java中碰到的设计模式 -
悲剧了:
...
jstl
搞开发的人都需要积累一些经典算法,以备不时之须。 搞开发也有好几年了,积累的一些算法一直没做过整理,这段时间无聊就把这些算法整理以下,以备以后之用。 算法——————鸡尾酒排序。 问题 有一数组,长度为n,把数组中的元素从小到大重新排列。 说明 鸡尾酒(cocktail)排序,又叫搅拌(shaker)排序。是改良的冒泡排序,冒泡排 序可见另一篇文章经典算法之冒泡排序。 思路 鸡尾酒排序的过程为:(1)先对数组从左到右进行冒泡排序(升序),则最大的元 素去到最右端;(2)再对数组从右到左进行冒泡排序(降序),则最小的元素去到最左 端。以此类推,依次改变冒泡的方向,并不断缩小未排序元素的范围。 例如对45 ,19, 77, 81, 13, 28, 18, 19, 77进行排序 从左到右:19,45,77,13,28,18,19,77,81 从右到左:13,19,45,77,18,28,19,77,81 从左到右:13,19,45,18,28,18,77,77,81 从右到左:13,18,19,45,18,28,77,77,81 从左到右:13,18,19,18,28,45,77,77,81 从右到左:13,18,18,19,28,45,77,77,81 这时不再发生交换,排序结束。 具体实现: package com.jack.arithmetic; /** /** /**
* 鸡尾酒排序
* @author jack
*
*/
public class CocktailSort {
public static void main(String[] args) {
int[] array = { 10, 3, 5, 31, 37, 5, 0, 9 };
// 对数据排序
sort(array);
for (int el : array) {
System.out.print(el + " ");
}
}
* 排序处理部分
* @param array
*/
static void sort(int[] array) {
int top = array.length - 1;
int bottom = 0;
boolean flag = true;
int i, j;
while (flag) {
flag = false;
// 从小到大,升序
for (i = bottom; i < top; i++) {
if (array[i] > array[i + 1]) {
swap(array, i, i + 1);
flag = true;
}
}
top--;
// 从大到小,降序
for (j = top; j > bottom; j--) {
if (array[j] < array[j - 1]) {
swap(array, j, j - 1);
flag = true;
}
}
bottom++;
}
}
* 数据替换部分
* @param array 给定的数组
* @param i 代替换下标
* @param j 替换部分下标
*/
private static void swap(int[] array, int i, int j) {
int tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
}
排序结果:0 3 5 5 9 10 31 37
发表评论
-
主题:IT工作检讨书
2010-09-16 17:44 1072由于上周请假的事情,被上级要求写一份检讨书且不少于100字,并 ... -
这里有自己收集整理的关于SVN的东西,1——SVN基本使用手册 2——Subversion 错误信息一览表.3——svn的一些常见问题
2010-08-28 09:29 1300这里我会把我自己整理的东西都贴出来,后面我还会把文档供给大家下 ... -
主题:别为大公司卖命
2010-08-28 09:27 7771.大公司最大的困扰,就是无法准确测量每个员工的贡献。它会 ... -
Javascript——悟透JavaScript
2010-08-27 16:20 999Javascript——悟透JavaS ... -
一个关于得到数字个数的问题?
2010-08-26 10:46 792一个关于得到数字个数的问题? 关键字: java应 ... -
电信拨号器
2010-08-26 10:38 978电信拨号器 关键字: 电信拨号程序、swing ... -
关于RSS的聚合---OPML
2010-08-26 10:34 1690关于RSS的聚合---OPML 关键字: rss,o ... -
hibernate集合映射inverse和cascade详解 (转载)
2010-08-26 10:31 771hibernate集合映射inverse和cascad ... -
互联网高性能系统构建思路
2010-08-26 10:30 701互联网高性能系统构 ... -
程序员修炼之七杀秘技
2010-08-26 10:30 780程序员修炼之七杀秘技 关键字: 程序员修炼、java ... -
Java多线程编程
2010-08-26 10:26 698Java多线程编程 关键 ... -
浅析Hibernate下数据批量处理方法
2010-08-26 10:25 808浅析Hibernate下数据批量处理方法 关键字: ... -
Javascript使用上的几点考虑
2010-08-26 10:24 701Javascript使用上的几点考虑 关键字: js ... -
高级程序员如何应对职场压力?
2010-08-26 10:24 710高级程序员如何应对职场压力? 关键字: 应用职场压力 ... -
认识Web网站的性能测试工具
2010-08-26 10:23 933认识Web网站的性能测试工具 关键字: web网站、 ... -
WebServices秘诀:设计SOA
2010-08-26 10:20 655WebServices秘诀:设计SOA 关键字: w ... -
XFire 入门
2010-08-26 10:20 729XFire 入门 关键字: xfire入门 【 ... -
HttpClient入门
2010-08-26 10:19 762HttpClient入门 关键字: httpclie ... -
JavaScript——延迟加载技术
2010-08-26 10:15 921JavaScript——延迟加载技术 文章分类:We ... -
封闭开发是为何?
2010-08-26 10:00 2559封闭开发是为何? 加班 ...
相关推荐
为了提高冒泡排序的效率,人们提出了多种改进算法,其中鸡尾酒排序(Cocktail Sort,又称双向冒泡排序)是一种常见的优化策略。 鸡尾酒排序的基本思想是在排序过程中,不仅从左向右进行比较和交换,还会从右向左...
鸡尾酒排序,又称 bidirectional bubble sort 或 cocktail sort,是一种基于冒泡排序的优化算法。在冒泡排序中,元素是按照从最小到最大的顺序逐渐“浮”到数组的前端,而鸡尾酒排序则通过从一端到另一端来回遍历...
本资源包涵盖了五种常见的排序算法:冒泡排序、选择排序、鸡尾酒排序(又称双向冒泡排序)、插入排序以及快速排序。这些排序算法在实际编程中有着广泛的应用,尤其是在处理大量数据时,了解并熟练掌握它们的原理和...
鸡尾酒排序,又称 bidirectional bubble sort 或者 cocktail sort,是一种变形的冒泡排序算法,因其在排序过程中,数据在数组两端来回扫动,如同调制鸡尾酒时酒液在杯中摇晃,故得此名。在这个压缩包文件中,你将...
鸡尾酒排序,也称为双向冒泡排序,是一种基于冒泡排序的优化算法。冒泡排序的基本思想是通过相邻元素之间的比较和交换,将较大的元素逐渐“冒”到数组的末尾。而鸡尾酒排序则在此基础上进行了改进,它不仅从左向右...
经典排序算法 - 鸡尾酒排序Cocktail sort 经典排序算法 - 希尔排序Shell sort 经典排序算法 - 堆排序Heap sort序 经典排序算法 - 地精排序Gnome Sort 经典排序算法 - 奇偶排序Odd-even sort 经典排序算法 - 梳...
本资源集成了五种经典的排序算法:冒泡排序、选择排序、鸡尾酒排序(也称作双向冒泡排序)、插入排序以及希尔排序。以下是对这些排序方法的详细说明: 1. **冒泡排序**: 冒泡排序是一种简单的排序算法,通过重复...
鸡尾酒排序是冒泡排序的一个变种,它不仅从左向右比较和交换相邻元素,还从右向左进行一次遍历。这种双向遍历的方式有助于减少数据的移动次数。 #### C++ 实现 `Cocktail`函数实现了鸡尾酒排序的基本逻辑。 ```...
鸡尾酒排序,又称定向冒泡排序、搅拌排序或涟漪排序,是冒泡排序的一种改进版。它的基本思想是从序列的一端开始,按照升序排列元素,然后从另一端开始,按照降序排列,如此反复,直到整个序列有序。这种排序方式类似...
鸡尾酒排序,又称“震波排序”或“摇摆排序”,是一种变种的冒泡排序算法。在易语言中实现鸡尾酒排序,可以帮助初学者深入理解排序算法的原理和易语言编程技巧。易语言作为一款中国自主研发的编程语言,以其独特的...
内容概要:本文详细介绍了冒泡排序算法的基本概念及其Python代码实现,重点解释了算法的基本步骤,以及常见的优化手段,如设置标志位和鸡尾酒排序。冒泡排序的时间复杂度为O(n²),适用于小规模的数据排序。 适用...
还有一些不那么常见但有趣的排序算法,如鸡尾酒排序(Shaker Sort,又称双向冒泡排序)和二路归并排序(Two-Way Merge Sort),它们在特定场景下可能更有效或更具启发性。 5. **通用快速排序(Generic Quick Sort)...
比如鸡尾酒排序(双向冒泡排序)或者插入排序的变体等,虽然效率可能低于O(N²),但它们的思路可能启发新的优化方法。 4. **通用快速排序**:这部分介绍了一个基于模板的快速排序实现,它可以对任何数据类型进行...
2. **双向冒泡排序**:即鸡尾酒排序,它结合了正向和反向冒泡,能够在一定程度上减少比较和交换的次数,提高效率。 3. **嵌入其他高效排序算法**:当数据规模超过一定阈值时,可以考虑使用快速排序、归并排序等更...
- 冒泡排序是最基础的交换排序算法,通过不断比较相邻元素并交换,使得每一轮遍历后最大的元素"冒"到数组末尾。 - 代码实现中的`bubbleSort`函数利用两个嵌套循环,如果发现相邻元素顺序错误则交换,如果一轮遍历...
例如,鸡尾酒排序(也叫双向冒泡排序)或选择排序等。 文章还预告了一个基于模板的通用快速排序实现,这个模板函数可以对任何数据类型进行排序,体现了C++模板的强大之处。 总的来说,排序算法的选择应根据实际...
双向冒泡排序也称为鸡尾酒排序或摇动排序,它是冒泡排序的一种变体,通过同时从两端向中间遍历来优化排序过程。 - **基本思想**: - 先从前向后遍历,将最大元素移动到队列尾部。 - 然后从后向前遍历,将最小元素...
除了这些基本的排序算法,还有希尔排序、鸡尾酒排序(也叫双向冒泡排序)、堆排序、Timsort等更高级的算法。这些算法各有特色,有的注重稳定性,有的追求效率,有的适应于特定类型的数据。 河内塔、老鼠走迷宫、...