算法笔记——排序算法

👌,begin:

排序算法很重要,它可以使数据按照一定的规律进行排序,各个语言的代码都有自己的排序函数,那么排序到底有哪几种方法,✌,如下:

按照效率分类如上图:

其中用的最多的当属快速排序,我理解的排序思路(🐏),首先我们选定一个基准数,假设选定一个需要排序的十个数据的数组的第一个值。我们定义两个指针,i指向第一个位置,j指向最后一个位置,首先j从后往前走,如果遇到比选定的基准数小的数,停止,i从前向后走,如果遇到大于基准数的数,停止,交换两个位置的数据,然后重复这个过程直到,i和j相遇(或者超过他),最终,交换i位置的数据和基准位置的数据。这样基准位置的左边所有的数都会小于他,右边的数都会大于他,然后对于左右两段,利用同样的方法进行排序。

function quickSort(int left,int right){定义两个指针,以及基准值
int i,j,temp;if(left>=right) return;i=left;
j=right;
temp=nums[i];while(i!=j){while(nums[j]>=temp&&i<j){ j--;}while(nums[i]<=temp&&i<j){ i++;}swap(nums[i],nums[j]);
}nums[left]=nums[i];
nums[i]=temp;quickSort(left,i-1);
quickSort(i+1,right);

 

冒泡排序,命名来自于这个算法所使用的方法,就类似于水中的气泡咕嘟咕嘟网上冒,

算法的⚪理如下:

从头开始,比较第一个和第二个数据,将大的移到后面(升序的方案,也可以自定义降序排序),然后比较第二个和第三个,一次类推,第一轮将最大移动到最后一位,第二轮将第二大的数据移动到倒数第二位,最终经过n(n-1)(n-2)……的交换,可以得到有序的数组

function(){for(int i=0;i<nums.size();i++){for(int j=0;j<nums.size()-i-1;i++){if(nums[j]>nums[j+1]) swap(nums[i],nums[j]);}}
}

当然,如果一直交换就有点蠢,那么进行一次优化,在两个循环之间定义一个标志,如果里面的for循环一次交换都没有发生,我们就可以自然而然的结束这次排序过程;

function(){for(int i=0;i<nums.size();i++){bool flag=true;for(int j=0;j<nums.size()-i-1;i++){if(nums[j]>nums[j+1]){swap(nums[i],nums[j]);flag=false;}  }if(flag){break;}}
}

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

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

相关文章

【Spring】设计思想

一、Spring 是什么&#xff1f; Spring是一个开源的Java框架&#xff0c;有着活跃而庞大的社区&#xff08;例如&#xff1a;Apache&#xff09;&#xff0c;Spring 提供了一系列的工具和库&#xff0c;可以帮助开发者构建高效、可靠、易于维护的企业级应用程序。Spring的核心…

短信压力测试系统,支持自定义接口

短信压力测试系统,支持自定义接口 支持卡密充值&#xff0c;短信压力测试系统&#xff0c;解决一切骚扰电话&#xff0c;教程在压缩包里面 可多个服务器挂脚本分担压力&#xff0c;套了cdn导致无法正常执行脚本可以尝试添加白名单 这边建议使用MySQL方式 同服务器下直接配置…

lesson 12 Zigbee绑定通信

目录 Zigbee绑定通信 通信原理 实验过程 实现步骤 实验现象 实验分析 Zigbee绑定通信 通信原理 1、Zigbee一共有五种通信方式&#xff1a;单播、广播、组播、MAC、广播 2、绑定是Zigbee的一种基本通信方式&#xff0c;具体绑定通信又分为三种模式&#xff0c;模式大同…

tomcat概述,优化,多实例部署

目录 一、概述 二、三个容器 1、Web 容器&#xff1a; 2、Servlet 容器&#xff1a; 3、JSP 容器&#xff1a; 三、Tomcat 功能组件结构 四、优化 1、启动速度优化 2、配置参数优化 五、多实例部署 一、概述 Tomcat 是 Java 语言开发的&#xff0c;Tomcat 服务器是一…

如何建立自己的知识体系?202209

知识太多了&#xff0c;无法全部快速吸收进大脑&#xff0c;需要通过特定的方法、技能&#xff0c;在面对大量知识的情况下&#xff0c;快速梳理&#xff0c;构建自己的知识体系。 学习的目标&#xff0c;不仅仅是记忆知识&#xff0c;而是搜索知识、并过滤、洞察、理解、使用…

搭建Hadoop高可用框架分布式集群

搭建Hadoop高可用框架分布式集群 一.基础配置 1.创建虚拟机&#xff0c;修改虚拟机的主机名 2.修改网络配置 master:192.168.6.200 slave1:192.168.6.201 slave2:192.168.6.202 3.互ping测试 4.sudo授权 5.安装vim编辑器 6.配置网络映射 master配置映射 master向slave1传递映…

大数据Doris(五十二):Doris数据导出案例和注意事项

文章目录 Doris数据导出案例和注意事项 一、Doris数据导出到HDFS案例 1、创建Doris表并插入数据 2、创建Export ,数据导出到 HDFS 3、查看任务 4、查看导出结果 二、Doris数据导出到本地案例 1、配置 fe.conf 2、Doris 数据导出到本地 三、注意事项 Doris数据导出案例…

Layui时间范围选择器,添加【本周、本月、本季度、本年等常用时间快捷键】

文章目录 1. 界面实现2. JS具体实现2.1 第一种实现2.2 第二种实现 1. 界面实现 <input id"Date_select" type"text" class"form-control" placeholder"请选择时间范围" style"border-radius: 4px;" /><input id&qu…

TypeScript - 函数(中)

目录 1、编写良好泛型函数的准则 1.1 向下推送类型参数 1.2 使用较少的类型参数 1.3 类型参数应出现两次 2、可选参数 3、回调中的可选参数 4、函数重载 5、重载签名和实现签名 6、写好重载 1、编写良好泛型函数的准则 编写泛型函数很有趣&#xff0c;并且很容易被类…

递归函数:

含义&#xff1a;自己调自己 递归三要素&#xff1a;定义函数、终止条件和等价关系式 小案例&#xff1a;排序 let arr1 [8, 8, 9, 13, 45, 8, 0, 1, 9, 66];//定义函数function quickSort(arr) {//终止条件if (arr.length < 1) return arr;const baseIndex Math.floor(…

uniapp顶部导航栏被遮住显示问题

解决uniapp顶部导航栏被遮住显示问题 uniapp官方给了处理的方案&#xff0c;即css变量&#xff0c;–status-bar-height&#xff0c;小程序这个值是25px&#xff0c;app则根据实际情况去变化 如下&#xff1a; //头部导航栏 <view class"header"> </view…

软件破解专题01

玩脱壳&#xff1f; 破解的功能&#xff1a;可以把收费软件免费使用 推荐论坛&#xff1a;pyg论坛》www.chinapyg.com 逆向&#xff1a;团队合作&#xff0c;有条件可以参加ctf大赛&#xff0c;这个应该是进步最快的途径 一个很强的开源项目&#xff1a;de4dot 作者…