前面选的轴为左边和中间,当然,这次的轴为数组的最右边,先看看吧。
/*
* 1, 以最右边的数s为比较的标准;
* 2, 未处理完毕的数组分为四个部分,从左到右依次为小于s的部分,大于s的部分,未比较部分和最右的s;
* 3, 小于s的部分最大下标是i;大于s的部分最大下标是j,刚开始时i为-1,j为0;
* 4, 在排序的过程中,一发现不大于s的数,i++,并将原i位置的数与新发现的数交换位置。一次循环完成后将s放到i+1的位置;
* 5, 以新s所在位置将原数组切割为两部分,进行新的递归。
*/
public static void QuickSort(int[] number)
{
QuickSort(number, 0, number.length - 1);
}
private static void QuickSort(int[] number, int left, int right)
{
if (left < right)
{
//q为新的切割点,分为大于s和小于s两个新的部分以进行递归
int q = partition(number, left, right);
//递归小于s的部分,在整个算法中,先排好左边的,再排右边的
QuickSort(number, left, q - 1);
//递归大于s的部分
QuickSort(number, q + 1, right);
}
}
private static int partition(int[] number, int left, int right)
{
int s = number[right];
int i = left - 1;
for (int j = left; j < right; j++)
{
//找出不大于s的数放在左边
if (number[j] <= s)
{
i++;
swap(number, i, j);
}
}
//找完后不大于s的数的下标已用到i,根据算法将s放到它们后面(i+1)的位置
swap(number, i + 1, right);
//返回s的位置,将原数组切分为两个新的数组,进行新的递归
return i + 1;
}
private static void swap(int[] number, int i, int j)
{
int t;
t = number[i];
number[i] = number[j];
number[j] = t;
}
小结:快速排序的效率与轴的选择有关,在这三个版本中,传说V3的效率最高,单循环+递归。这三个算法也都很好理解,我直接使用良葛格的Java代码,只是加上自己的理解作为注释,算是读书笔记吧。不当的地方请大家多多指正,不胜感激。
下面是原文链接:
http://caterpillar.onlyfun.net/GossipCN/AlgorithmGossip/QuickSort3.htm
分享到:
相关推荐
H-ui.admin_v3.0是一款专为后台管理系统设计的前端框架,它以简洁、实用、高效为核心理念,旨在为开发者提供一套快速构建管理界面的解决方案。这款框架的最新版本V3.0在继承了前代优点的基础上,进一步提升了用户...
拓网网络硬盘系统_V3.0_Free是一款专为个人和企业设计的网络存储解决方案,它提供了高效、安全的云存储功能,便于用户管理和共享数据。这个版本(V3.0 Free)可能是该软件的免费版,针对那些需要基础云存储服务但...
WWW BBS v3.0可能内置了高效的搜索引擎,帮助用户快速找到感兴趣的话题或者历史帖子。同时,论坛可能还支持排序和过滤功能,例如按时间、热度、回复数等标准排列帖子,以便用户发现热门话题。 安全性方面,考虑到...
JTopCms 站群内容管理系统 v3.0 更新日志 新增功能: 1)支持集群化部署和按业务分布式部署 2)文件发布点增加 OSS COS 七牛云存储支持 3)部门级权限支持留言和表单分级管理 4)高级搜索功能支持扩展字段模糊...
FineBI V3.0作为一款专业的商业智能分析平台,为用户提供了一系列解决方案,涵盖数据处理、分析、展示以及决策支持等功能。 首先,FineBI产品定位清晰,旨在为大数据时代提供解决方案。商业智能BI的核心价值在于将...
系统拥有强大的标签自动生成系统,任何您想要实现的功能,例如输出格式(table和div可选)、排序方法、文章属性、文章行距、文章数量、标题字数、日期格式、分隔图片、标题样式等等只需要在后台进行相关设置即可;...
文本整理器V3.0或许具备这样的功能,能快速去除文本中的多余元素。 4. **搜索与替换**:强大的搜索和替换功能是必不可少的,可以帮助用户快速查找并替换特定内容,尤其在处理大型文本文件时非常有用。 5. **分章分...
QuickViewFolderSize-v3.0正是为此而设计,它能帮助用户快速定位占用空间较大的文件夹,从而更有效地进行文件管理。通过这款工具,用户可以一眼看出哪个文件夹占用了大量的磁盘空间,进而决定是否需要清理或者移动...
《网翼国际新闻系统 V3.0》是一款用于构建新闻发布平台的软件,它集成了全面的新闻发布、管理及展示功能,适用于企业、媒体和其他需要在线发布新闻资讯的机构。这款系统的超级管理员账户预设为“admin”,默认密码为...
vBulletin v3.0 RC4在保持快速搜索性能的同时,解决了中文搜索时可能出现的问题。通常,英文字符的搜索比中文字符更为简单,因为英文字符数量有限且有固定排序。但中文字符的复杂性增加了搜索难度。这个版本通过...
《WGB西路留言本 v3.0SQL版》是一款基于SQL数据库系统的专业级留言板软件,其功能强大且灵活,适用于各类网站的互动交流需求。这款软件具有以下主要特点: 1. **多级管理员系统**:该系统支持多管理员管理,分为一...
Power-BI V3.0提供了更加强大且灵活的钻取功能,允许用户从汇总数据快速跳转至明细记录,以便深入了解背后的具体情况。比如,当用户发现某个统计数据异常时,可以通过钻取功能查看相关的明细数据,如具体的交易记录...
**dhtmlxSuite v3.0专业版**是一款强大的JavaScript组件库,专为构建富互联网应用程序(RIA)而设计。这个版本特别强调了其内置的甘特图组件,使得项目管理和任务调度变得更加直观和高效。 **一、dhtmlxSuite概述**...
这个版本,v21.1.3.0,是DevExpress产品线的一个更新,它提供了最新的功能和改进,旨在提升开发人员的工作效率和应用的质量。 DevExpress v21.1.3.0可能包含以下关键组件和知识点: 1. **UI控件库**:DevExpress...
**博客内容管理系统BlogCMS v3.0详解** **一、系统概述** BlogCMS v3.0是一款专为个人和企业用户设计的博客内容管理系统。它提供了完善的博客搭建、管理及维护功能,使得用户无需深入了解编程知识,也能轻松创建和...
【SEO伪原创工具V3.0】是一款专为优化搜索引擎排名而设计的免费软件,尤其针对谷歌、百度、雅虎和ASK等主流搜索引擎。这款工具的主要功能是帮助用户生成高质量的伪原创内容,以提高网站在搜索引擎结果中的可见性和...
新旺淘宝相册系统源代码V3.0是一款专为淘宝和拍拍商家设计的免费相册解决方案。这个系统的核心目标是提供一个高效、便捷且成本低廉的图片存储和展示平台,帮助电商店主更好地管理和展示商品图片,提升店铺形象和销售...
"尘缘雅境图文系统 v3.0 SQL版" 是一款基于ASP编程语言开发的网站内容管理系统,专门针对图文信息的发布、管理和展示而设计。这个系统的核心是利用SQL数据库来存储和处理数据,提供了高效的数据存储和检索能力,使得...
《世新网络全站程序 v3.0》是一款集成了多种功能模块的网站管理系统,旨在为用户提供一站式的网站建设和管理解决方案。这款系统包含了新闻、文章、下载、影视、链接、留言、小型品网、投票以及统计等多个核心功能,...
【东方自助网站系统v3.0】是一款专为个人或中小企业设计的整站程序,它提供了全面的网站建设解决方案,帮助用户快速搭建个性化、功能齐全的网站。系统集成了多种功能模块,包括内容管理、会员系统、新闻发布、产品...