您现在的位置是:首页 > 文章详情
快速排序
日期:2018-12-20点击:471收藏
快速排序
- 这是一篇自学文章,如果有错误地方请及时指出
- 基本思想就是,确定一个在数组中的值,这个值可以将数组分裂为两部分,然后这两部分再分别找到那个中间值,然后再分别按照中间值在切分数组,直到最后不可切分了,也就排序完成了,如下图
- 好了下面将是一次排序的大概流程图
-
java代码实现
public static void main(String[] args) { int[] arrs = {7,12,3,5,8,15,9,6,6,6,6,19,-2}; quickSort(arrs,0,arrs.length - 1); System.out.println(Arrays.toString(arrs)); } private static void quickSort(int[] arrs, int l, int r) { if (l < r){ //index就算返回回来的分割点 int index = getindex(arrs,l,r); //有了分割点就知道怎么分割两段数据序列了 quickSort(arrs,l,index-1); quickSort(arrs,index+1,r); } } private static int getindex(int[] arrs, int l, int r) { int base = arrs[l]; //取第一个值做base值 //保证不判断过头 while (l < r){ //arrs[r] > base 只要比base大的值就继续找,找到比base小的或者相等的 //就不满足条件就可以确定值的下标了 while (l < r && arrs[r] >= base){ //进来就代表比base大 r --; } //到这就算找到<=base的值了,然后赋值给left arrs[l] = arrs[r]; //开始寻找比base大的值,流程跟上一个while一样 while (l < r && arrs[l] <= base){ l ++; } //到这就算找到>=base的值了,然后赋值个right arrs[r] = arrs[l]; } //然后将base值赋值给right arrs[r] = base; //返回这个分割点,即right return r; }

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
[ERROR] Result: { execute timeout }异常解决
阿里云ToolKit插件使用异常记录 ToolKit插件配置如下 RUN运行返回异常结果: [ERROR] Target Deploy ECS: { 172.18.*.* / 47.107.*.* } [ERROR] Command: { sh /home/service.sh service-* } [ERROR] Result: { execute timeout } [ERROR] Finished at: null 根据插件返回的异常内容分析得知是我们的service.sh脚本执行超时。 脚本内容如下 经检查脚本内并无可能造成死循环的可能。 服务器本地手动运行脚本测试如下 脚本运行正常,服务正常启动。但是脚本返回结果时输出了nohup: redirecting stderr to stdout后并未直接退至新的命令行。由此我们怀疑是noh
- 下一篇
Python进阶目录
Python基础 Python函数 Pyhon模块 Python面向对象 Python网络编程
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
扫描即可查看该文章
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7设置SWAP分区,小内存服务器的救世主