介绍

鸡尾酒排序,名字很好听.不过,这只是一个对冒泡排序的一个改进的算法而已.

这个算法与冒泡排序不同的一点在于,他在冒泡排序从低到高进行一波排序之后,又从高到低进行一波排序,以此类推,因此,这个算法也叫做定向冒泡排序

这个算法与冒泡排序一样,在面对乱序程度较高的数据的时候有着比较差的性能

实现思路

loop
先是从低到高进行排序,比较相邻的两个数,不符合排序要求的就进行顺序调换,
然后是从高到低进行排序,比较相邻的两个数,不符合要求的就进行顺序调换(当然,这里要注意,反向排序的时候,相邻两个数的比较条件的问题)
end

代码实现

CocktailSort.h

class CocktailSort {
private:void swap(int arr[], int a, int b);
public:void sort(int arr[], int size);
};

CocktailSort.cpp

#include "CocktailSort.h"void CocktailSort::swap(int arr[], int a, int b)
{int temp = arr[a];arr[a] = arr[b];arr[b] = temp;
}void CocktailSort::sort(int arr[], int size)
{int left = 0, right = size - 1;while (left < right) {for (int i = left; i < right; i++) {if (arr[i] > arr[i + 1]) {swap(arr, i, i + 1);}}right--;for (int i = right; i > left; i--) {if (arr[i] < arr[i - 1]) {swap(arr, i, i - 1);}}left++;}
}

main.cpp

#include<iostream>
#include"CocktailSort.h"using namespace std;int main() {int arr[] = { 1,2,43,31,21,4,53,12,32,44,1,23 };CocktailSort * cocktailSort = new CocktailSort();int size = sizeof(arr) / sizeof(int);cocktailSort->sort(arr, size);for (int i = 0; i < size; i++) {cout << arr[i] << "  ";}int temp;cin >> temp;return 0;
}

结果:

数据结构-----鸡尾酒排序相关推荐

  1. 鸡尾酒排序算法c语言,[golang] 数据结构-鸡尾酒排序

    吐个槽 又是一个不正经取名的排序算法.真要说和鸡尾酒间的关系,大概就是想喝到鸡尾酒(得到排序好的队列)就要摇晃酒杯让不同的成分混合均匀(向两个方向冒泡排序) 原理 鸡尾酒排序(Cocktail Sor ...

  2. 数据结构与算法专题——第九题 鸡尾酒排序

    这篇我们来聊一下鸡尾酒排序,为了知道为啥取名为鸡尾酒,特意看了下百科,见框框的话,也只能勉强这么说了. 要是文艺点的话,可以说是搅拌排序,通俗易懂点的话,就叫"双向冒泡排序",我想 ...

  3. 数据结构排序法之鸡尾酒排序法he快速排序法

    鸡尾酒排序,也叫定向冒泡排序,是冒泡排序的一种改进.此算法与冒泡排序的不同处在于从低到高然后从高到低,而冒泡排序则仅从低到高去比较序列里的每个元素.他可以得到比冒泡排序稍微好一点的效能. // 两两互 ...

  4. 数据结构 7 基础排序算法详解 鸡尾酒排序法、了解钟摆排序实现

    前言 上节,我们已经通过对冒泡算法的优化.能够达到我们预想的结果.比较次数的减少.本节将继续在冒泡排序的基础上进行优化.能够达到刚好的效果. 鸡尾酒排序

  5. [数据结构][Python]鸡尾酒排序、桶排序

    鸡尾酒排序: #!/usr/bin/python def _cocktail_sort(the_list):the_len = len(the_list)if the_len <2:#0和1pr ...

  6. 数据结构与算法(十六)冒泡排序和鸡尾酒排序

    冒泡排序(Bubble Sort)是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,以将当前序列的最小值交换到当前序列最前端为一轮结束,需要(length-1)轮,感觉数据是一 ...

  7. 常用数据结构以及数据结构的排序算法

    2019独角兽企业重金招聘Python工程师标准>>> 数组 (Array) 在程序设计中,为了处理方便, 把具有相同类型的若干 变量按有序的形式组织起来.这些按序排列的同类数据元素 ...

  8. C语言实现鸡尾酒排序

    鸡尾酒排序算法: void cocktailSort(int A[], int n){int left = 0;int right = n - 1;while (left != right) {for ...

  9. [排序]鸡尾酒排序算法实现

    作者 zhonglihao 算法名 鸡尾酒排序 Cocktail Sort 分类 排序 复杂度 % 大概是1/2 * n^2时间复杂度 形式与数据结构 Matlab代码 特性 来回顺序倒序排序 具体参 ...

最新文章

  1. SharePoint Project Item Replaceable Parameters
  2. androidstudio 日历视图怎么显示农历_记事日历-记事与时间管理工具
  3. Python-自定义函数-参数
  4. 修改linux文件权限命令:chmod
  5. python学习之路-day8
  6. Python批量重命名Maya场景中的3D物体
  7. 机器学习利器——决策树和随机森林
  8. oracle 数据库dg搭建规范1
  9. c语言怎么储存字母,c语言怎么用变量存储中文字符?书本上面没有的秘密
  10. 有商在线进销存成功案例
  11. 深入理解ButterKnife源码并掌握原理(一)
  12. PHP开发中的中文编码问题
  13. 创业维艰,技术人创业如何少走弯路?
  14. CSTSOFT ActiveX GDIPlus Pack 2021.03
  15. android中dex文件的函数解析
  16. 电脑开启wifi热点
  17. Monkey测试------报错日志分析参考
  18. 六个好用的在线代码编辑器,你选哪个?
  19. 将网页,网站(HTML,php,css)上传浏览器,实现输入网址即可访问(保姆级教学)
  20. 不是私密链接,如何继续前往?

热门文章

  1. 程序员在工作中这样做,会省去一大堆烦恼
  2. 导入自己模块包导入报错:ModuleNotFoundError: No module named ‘xxx‘解决方法 晓物智联
  3. 如何画好场景速写:独特+夸张轻松应对
  4. Swagger 自动生成 Dubbo 服务的接口文档,以及测试调用
  5. Ubuntu下不能看视频的解决办法
  6. 第一课行列式性质与几何意义
  7. Django 之自动化部署
  8. php泡点,夜猫首页更新PHP程序 是一个应用于网站
  9. 二维计算机动画,二维计算机动画制作新技术.pdf
  10. 股票波动率 python_如何统计投资品种波动率(python)?