快排为什么不稳定 举例说明
不稳定 来源于我们的一步步的操作
快排操作思路 从后面寻找小的 去兑换前面寻找的大的 然后直接交换 , ,
下面是实际
比如这样一个数组: 6 100 100 1
第一步 :根据算法操作 1显然会跟100交换 直接就交换了
看到这里应该都能看懂了(前提是有快排算法基础)
下面是我写的代码 注释较少 不宜看懂` private static int[] func(int[] a, int l, int r) {
if(l>=r){return null;}//比如 数组: 6 1 自己慢慢一步步推,能知道有个l是大于r的了
int start = a[l];
int origin_l = l;
int origin_r = r;
while (l < r) {//while(a[r--]>=start){}这不对 加入4 ,1,2,3 //321都不满足 但是r还是减了1while (a[r] >= start && l < r) {r--;}while (a[l] <= start && l < r) {l++;}if (l < r) {int temp = a[r];a[r] = a[l];a[l] = temp;}}//走到这 说明lr重合了a[origin_l] = a[l];a[l] = start;//完成左半部分func(a, origin_l, l - 1);//完成右半部分func(a, l + 1, origin_r);return a;
}
}
代码注释较少 见谅 `
快排为什么不稳定 举例说明相关推荐
- 排序 ---- 快排(C语言)
思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都要比另一部分的所有数据要小,然后再按此方法对这两部分数据分别进行快排,整个过程可以递归进行,以此达到整个数据变成有序序列. 时 ...
- SEO快排的行业秘密,原来SEO快排套路这么深
关于SEO快排,相信很多人并不陌生了.市面上的SEO优化公司,很多都在用SEO快排形式,但是你知道SEO快排套路有多深吗?今天,本文来揭秘一下SEO快排的行业内幕,别再被割韭菜了. SEO快排的基础概 ...
- Java常见的几种排序算法-插入、选择、冒泡、快排、堆排等
本文就是介绍一些常见的排序算法.排序是一个非常常见的应用场景,很多时候,我们需要根据自己需要排序的数据类型,来自定义排序算法,但是,在这里,我们只介绍这些基础排序算法,包括:插入排序.选择排序.冒泡排 ...
- java快排原理_Java数据结构与算法——快速排序
声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督.本篇文章介绍排序算法中最常用也是面试中最容易考到的排序算法--快排,包括快排的思 ...
- 三种快排及四种优化方式
本文是转载文章,文章的来源:csdn博客 博主:silentsharer 文章: 三种快排及四种优化方式 博文地址:https://blog.csdn.net/hacker00011000/artic ...
- 快排的优化策略(3种快排4种优化)
转自:http://blog.csdn.net/hacker00011000/article/details/52176100 1.快速排序的基本思想: 快速排序使用分治的思想,通过一趟排序将待排序列 ...
- Leetcode 912.排序算法(快排)
难度:中等 频率:179 题目: 给你一个整数数组nums,请你将改数组升序排列. ** PS:快排需要注意的点** 1.快排 平均时间复杂度O(NlogN) 空间复杂度logn 不稳定. 2.基于比 ...
- 快排堆排归排三种排序的比较
目录 快排 堆排序 归并排序 三种排序的比较 快排 快速排序中最简单的(递归调用) 注:倒序,和 列表中有大量重复元素时,时间复杂度很大 快排例子 注:快排代码实现(类似于二叉树 递归调用) 时间复杂 ...
- javascript 实现快排 ,三向切分快排
比如说对数组快排的思路就是: 选取一个基准(可以选数组的开头最为基准,令 i = 0 ;j = array.length -1) 从arr[j]向前遍历(j--),当该值大于基准,则交换,退出循环(b ...
最新文章
- linux 库函数拦截,如何使用net_dev_add()API过滤和拦截Linux数据包?
- 168. Leetcode 134. 加油站 (贪心算法-模拟题目)
- bootstrap-datetimepicker bootstrap-datepicker bootstrap-timepicker 时间插件
- QAU 18校赛 J题 天平(01背包 判断能否装满)
- 利用延迟关联或者子查询优化超多分页场景
- 怎样使用navicat将mysql的数据表导出保存(转储SQL文件)
- LeetCode 209. 长度最小的子数组
- 【程序员自救指南】一个证书,让我哄好了小师妹
- Bzoj 3196 Tyvj 1730 二逼平衡树
- 学习实践:使用模式,原则实现一个C++自动化测试程序
- Tomcat 调优之从 Linux 内核源码层面看 Tcp backlog
- css border实现渐变
- 华为机试练习(十二)叠积木
- [源码解析]ESPnet脚本源码解析-aishell-asr.sh
- 图像标注工具python+opencv
- ISCC 2018 PWN WriteUp
- STM32学习笔记(5) 串口通讯-接收与发送
- 魅族2014发布会简单总结
- 使用js与画布实现小型植物大战僵尸
- lt;=gt;与lt;gt;的区别
热门文章
- css实现loading,CSS3实现18种Loading效果
- Python实现简单的闹钟/倒计时/番茄钟软件并打包成exe
- CMSIS-RTOS2 入门教程 [2]——RTX_Config.h配置
- 【SQL语句】SQL语句大全之技巧篇
- 鸿蒙大陆罪恶深渊哪里出,新魔界官方全面解析罪恶深渊生存要点
- python列表中怎么去掉空值_Python 如何删除列表中的空值
- K12526 找双亲和孩子
- 扬州职业大学计算机一级,扬州市职业大学教务管理系统入口http://jwgl.yzpc.edu.cn/...
- (附源码)springboot掌上博客系统 毕业设计 063131
- 找工作绝对没有问题的linux运维面试题(2)