【快速排序二】
发布日期:2021-10-22 10:56:44 浏览次数:11 分类:技术文章

本文共 1955 字,大约阅读时间需要 6 分钟。

 

 

/*快速排序法二 说明:在快速排序法(一)中,每次将最左边的元素设为轴,而之前曾经说过,快速排序法的加速在于轴的选择,在这个例子中,只将轴设定为中间的元素,依这个元素作基准进行比较,这可以增加快速排序法的效率。解法;在这个例子中,取中间的元素s作比较,同样的先得右找比s大的索引 i,然后找比s小的索引 j,只要两边的索引还没有交会,就交换i 与 j 的元素值,这次不用再进行轴的交换了,因为在寻找交换的过程中,轴位置的元素也会参与交换的动作,例如:41 24 76 11 45 64 21 69 19 36首先left为0 , right为9 , (left+right)/2 = 4 (取整数的商),所以轴为索引4的位置,比较的元素是45,您往右找比45大的,往左找比45小的进行交换:41     24 76*     11 [45] 64     21     69 19 *3641     24 36     11 45*     64     21     69 19* 7641     24 36     11 19     64* 21* 69 45 76[41 24 36     11 19     21] [64 69 45 76]完成以上之后,再初别对左边括号与右边括号的部份进行递回,如此就可以完成排序的目的。*/#include
#include
#include
#include
#define MAX 10#define SWAP(x, y){int t; t = x; x =y; y = t;}void quicksort(int [], int, int );int main(void){ int number[MAX] = {
0}; int i, num, flag = 1; char ch; srand(time(NULL)); while(flag){ printf("排序前:"); for(i = 0; i < MAX; i++){ number[i] = rand() % 100; printf("%d ", number[i]); } quicksort(number, 0, MAX - 1); printf("\n排序后:"); for(i = 0; i < MAX; i++){ printf("%d ", number[i]); } printf("\n"); printf("是否继续?(y or Y):"); scanf("%c", &ch); getchar(); if(ch != 'y' && ch != 'Y'){ flag = 0; } } return 0;}void quicksort(int number[], int left, int right){ int i, j, s; if(left < right){ s = number[(left + right) / 2]; i = left - 1; j = right + 1; while(1){ while(number[++i] < s); //向右找 while(number[--j] > s); //向左找 if(i >= j){ break; } SWAP(number[i], number[j]); } quicksort(number, left, i - 1); //对左边进行递回 quicksort(number, j + 1, right); //对右边进行递回 }}

 

运行结果:

 

转载于:https://www.cnblogs.com/libra-yong/p/6389281.html

转载地址:https://blog.csdn.net/weixin_30326745/article/details/95633585 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:无法下载APP
下一篇:想做前端开发?推荐几个必备珍品组件库

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年03月24日 04时39分10秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Maria数据库怎么复制到mysql_MySQL、MariaDB数据库的AB复制配置过程 2019-04-21
mysql5.6 icp mrr bak_【mysql】关于ICP、MRR、BKA等特性 2019-04-21
mysql utf8跟utf8mb4_MySQL utf8 和 utf8mb4 的区别 2019-04-21
docker mysql开机自启动_Docker学习4-学会如何让容器开机自启服务【坑】 2019-04-21
在mysql中删除表正确的是什么_在MySQL中删除表的操作教程 2019-04-21
mysql有3个共同好友_共同好友mysql 2019-04-21
代理查询 mysql_查询数据库代理设置 2019-04-21
mysql dif_mysqldiff实现MySQL数据表比较 2019-04-21
mysql 允许其他主机访问权限_允许其他主机访问本机MySQL 2019-04-21
druid不能close mysql连接_alibaba druid mysql连接问题 2019-04-21
mysql 设置按天分表_MySQL 优化实战记录 2019-04-21
java连接mysql 不推荐_java连接mysql 2019-04-21
mysql数据库 quota_shell脚本抓取用户存储quota写道mysql并展现到grafana面板 2019-04-21
idea测试连接mysql报错08001_IDEA连接MySQL错误 2019-04-21
layui导入模板数据_layui表格-template模板的三种用法 2019-04-21
mysql分组显示行号_mysql 显示行号,以及分组排序 2019-04-21
MySQL常见的主从复制架构_如何搭建经典的MySQL 主从复制架构 2019-04-21
编写python程序、计算账户余额_小明有20w存款存在余额宝中,按余额宝年收益为3.35%计算,用Python编写程序计算,多少年后小明的存款达到30w?... 2019-04-21
python 公众号引流_公众号引流方法有哪些? 2019-04-21
java 减少内存_java中减少内存占用小技巧 2019-04-21