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

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

// 两两互换
void swap (int* a, int i, int j)
{int tmp;tmp  = a[i];a[i] = a[j];a[j] = tmp;
}// 鸡尾酒法
void tail1 (int* a, int len)
{// 初始化边界int left  = 0;int right = len - 1;int i;while (left < right){// 前半轮将最大元素放到最后面for (i = left; i < right; i++){if (a[i] > a[i+1]){swap (a, i, i+1);}}right--;                        // 右边界左移一位// 后半轮将最小元素放到最前面for (i = right; i > left; i--){if (a[i-1] > a[i]){swap (a, i, i-1);}}left++;                     // 左边界右移一位}   
}

快速排序(Quicksort)是对冒泡排序的一种改进。
它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

// 两两互换
void swap (int* a, int i, int j)
{int tmp;tmp  = a[i];a[i] = a[j];a[j] = tmp;
}// 分区操作,返回基准值的下标
int partition(int *a, int left, int right)
{int pivot = a[right];int index = left;   // 如果找到一个比基准值小的元素,与下标为index的元素交换int i;for (i = left; i < right; i++){if (a[i] < pivot){swap (a, i, index);index++;}}swap (a, index, right);return index;   // 基准值所在位置下标
}void qSort(int *a, int left, int right)
{if (left < right){int pivot = partition(a, left, right);  // 进行分区操作,找基准值下标qSort (a, left, pivot-1);     // 对左边部分进行快速排序qSort (a, pivot+1, right);    // 对右边部分进行快速排序    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/448495.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VSCode 多开、环境对比

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 多开&#xff1a; 第一种&#xff1a;win10的开始菜单&#xff0c;在vscode图标右键选择“新开窗口”&#xff0c;这样就多了一个vscode…

前言_工作两年自我感触

17年大学毕业&#xff0c;到今天整整工作两年&#xff0c;从前端到数据分析&#xff0c;从上家公司&#xff08;简称A&#xff09;到现公司&#xff0c;想趁着今天是参加工作两年的纪念日&#xff0c;回忆过往&#xff0c;结合现状有感而发。 刚毕业的时候&#xff0c;啥都学&a…

数据结构排序法之堆排序he归并排序

堆排序&#xff08;Heapsort&#xff09;是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构&#xff0c;并同时满足堆性质&#xff1a;即子结点的键值或索引总是小于&#xff08;或者大于&#xff09;它的父节点。 堆排序的时间&#xff0c;主要由建…

超详细设置 Idea 类注释模板和方法注释模板

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 网上找了一下&#xff0c;没有很详细且正确介绍Idea配置注释模板的&#xff0c;于是结合多篇文章自己琢磨整理出如下。 设置类注释模板…

手动创建两个文本文件text1.txt和text2.txt,按要求创建text3.txt

实现在text1.txt和text2.txt文件中除去首行和末尾对应的数据&#xff0c;要求三个文本内容如下&#xff1a; text1 text2 text3begin begin begin10 11 12 15 16 17 …

感情

团结 共患难的感情转载于:https://www.cnblogs.com/yyjh/p/11139749.html

谁抢走了中国男人的老婆?

“老夫少妻”、“包二奶”、“洋媳妇”、“单身贵族”、“丁克家庭”都是当今最时髦的词汇。这看似“你情我愿”的现象背后竟隐藏着巨大隐患! 目前中国男女比例是119&#xff1a;100&#xff0c;某些地区已达130&#xff1a;100;中国将有5百万以上光棍&#xff0c;这对中国社会…

latex 幻灯片演示模板

http://zzg34b.w3.c361.com/templet/slide.htm转载于:https://www.cnblogs.com/binterminator/articles/1621647.html

Linux 文件系统编程之系统调用和标准I/O库

系统调用 访问设备驱动程序的底层函数主要有&#xff1a; open:打开文件或者设备。 read:从打开的文件或者设备里面读取数据。 write:向文件或者设备写数据。 close:关闭文件或者设备。 open系统调用&#xff1a; #include <fcntl.h> #include <sys/types.h> #in…

mysql 索引:类型 、创建

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一个简单的对比测试 以我去年测试的数据作为一个简单示例&#xff0c;20多条数据源随机生成200万条数据&#xff0c;平均每条数据源都重…

水调歌头·中秋

转载于:https://www.cnblogs.com/divineka/archive/2004/09/04/39560.html

代码面试最常用的10大算法

摘要&#xff1a;面试也是一门学问&#xff0c;在面试之前做好充分的准备则是成功的必须条件&#xff0c;而程序员在代码面试时&#xff0c;常会遇到编写算法的相关问题&#xff0c;比如排序、二叉树遍历等等。 在程序员的职业生涯中&#xff0c;算法亦算是一门基础课程&#…

fork与vfork的区别

fork与vfork的区别 1.vfork保证子进程先运行&#xff0c;在它调用exec或exit之后父进程才可能被调度运行。如果在调用这两个函数之前子进程依赖于父进程的进一步动作&#xff0c;则会导致死锁。 2.fork要拷贝父进程的进程环境&#xff1b;而vfork则不需要完全拷贝父进程的进程…

IDEA 2018 集成 MyBatis Generator 插件 详解、代码生成

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1、修改maven的pom文件 只需要将如下依赖添加到pom.xml文件中即可。&#xff08;注意此处是以plugin的方式&#xff0c;放在<plugins…

MongoDB监控及报警

转载请注明出处&#xff1a;https://www.cnblogs.com/shining5/p/11142357.html MongoDB监控及报警 Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库&#xff0c;其使用go语言开发。基本原理是通过HTTP协议周期性抓取被监控组件的状态&#xff0c;任意组件只要提…

umask命令:设置文件的默认权限掩码

今天接触到了掩码&#xff0c;从博客上总结了一些关于掩码解释比较全面的分析&#xff0c;和大家分享下。 文件权限是linux系统中的一种安全机制&#xff0c;通过设置不同的权限&#xff0c;可以达到限制用户操作的目的&#xff0c;有效地保证了文件的完整性。 默认的情况下&…

如何学习开源项目及Ceph的浅析

摘要&#xff1a;开源技术的学习和采用确实存在着一定门槛&#xff0c;然而学习各种开源项目已经成为许多开发者不可回避的工作内容。那么&#xff0c;对于类似OpenStack的大型开源项目&#xff0c;开发者该如何着手&#xff0c;这里我们看章宇的分享。 【编者按】在 上一届O…

Mybatis 中更新方法: updateByPrimaryKeySelective() 和 updateByPrimaryKey() 的区别

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 int updateByPrimaryKeySelective(TbItem record); int updateByPrimaryKey(TbItem record); 上面的是逆转工程生成的Mapper接口 对应…

SHT知识库操作要点

1.保存文档库模板&#xff1a; 知识库---设置---文档库设置---权限管理---将文档另存为模板2.设置版本号&#xff1a;知识库---设置---文档库设置---常规设置---版本控制设置3.设置文档库权限&#xff1a;列表---设置---文档库设置---此文档库的权限&#xff08;用户组读取列表…

浅谈三种特殊进程:孤儿进程,僵尸进程和守护进程

昨天学了进程控制&#xff0c;就这三种特殊的进程研究了一下&#xff0c;其中也借鉴了一些前人总计的经验。 1、孤儿进程 如果父进程先退出,子进程还没退出那么子进程将被 托孤给init进程,这里子进程的父进程就是init进程(1号进程).其实还是很好理解的。 // 父进程先子进程退…