`

快速排序(v 1.0)

J# 
阅读更多
快速排序法(quick sort)是目前所公认最快的排序方法之一,虽然快速排序法在最差状况下可以达O(n2),但是在多数的情况下,快速排序法的效率表现是相当不错的。

快速排序法的基本思想是在数组中找出适当的轴心,然后将数组一分为二,分别对左边与右边数组进行排序,而影响快速排序法效率的正是轴心的选择。

这边所介绍的第一个快速排序法版本,是在多数的教科书上所提及的版本,因为它最容易理解,也最符合轴心分割与左右进行排序的概念,适合对初学者进行讲解。

public static void quicksort(int[] number)
{
	quicksort(number, 0, number.length-1);
}

/**
 * @param number	待排序的数组
 * @param left		左边index
 * @param right	      右边index
 */
private static void quicksort(int[] number, int left, int right)
{
	
	if (left < right)
	{
		int s = number[left];//将最左边的数设定为轴,并记录其值为 s
		int i = left;
		int j = right+1;

		while (true)
		{
			// 1. 令索引 i 从数组左方往右方找,直到找到大于 s 的数
			while (i + 1 < number.length && number[++i] < s)	{}
			// 2. 令索引 j 从数组右方往左方找,直到找到小于 s 的数 
			while (j - 1 > -1 && number[--j] > s)	{}
			// 3. 如果 i >= j,则退出循环
			if (i >= j) break;
			// 4. 如果 i < j,则交换索引i与j两处的值
			swap(number, i, j);
		}
		// 5. 将左侧的轴与 j 进行交换
		number[left] = number[j];
		number[j] = s;

		// 6. 对轴左边进行递归
		quicksort(number, left, j - 1); 
		// 7. 对轴右边进行递归
		quicksort(number, j + 1, right);  
	}
}

private static void swap(int[] number, int i, int j)
{
	int t;
	t = number[i];
	number[i] = number[j];
	number[j] = t;
}
分享到:
评论

相关推荐

    基于PHP的在线汉字拼音转换工具php版v1.0源码.zip

    快速排序 基于PHP的在线汉字拼音转换工具php版v1.0源码.zip 基于PHP的在线汉字拼音转换工具php版v1.0源码.zip 基于PHP的在线汉字拼音转换工具php版v1.0源码.zip 基于PHP的在线汉字拼音转换工具php版v1.0源码.zip ...

    9om SiteSearch v1.0 html全文站内搜索引擎

    9om SiteSearch v1.0 是一款专为网站设计的html全文站内搜索引擎,它能够帮助用户快速、高效地在网站内部找到所需的信息。这款软件的重要性在于,它优化了用户体验,提高了网站内容的可查找性,是提升网站交互性和...

    超级文件批量重命名工具v1.0_命名_批量_文件_文件名_修改_

    "超级文件批量重命名工具v1.0"正是为解决这一问题而设计的软件,它能够帮助用户快速、高效地批量更改文件夹及文件的名称,极大地提升了工作效率。 批量重命名的基本原理是通过一个特定的规则或模式来一次性修改多个...

    品络音乐程序 v1.0 品络音乐程序 v1.0

    2. **音乐管理**:除了播放功能之外,品络音乐程序 v1.0 可能还具备音乐文件的管理功能,例如创建播放列表、按照艺术家或专辑进行排序等功能。 3. **音质调整**:现代音乐播放器通常还会提供音质调节选项,比如均衡...

    chess back up V1.0

    《象棋备份软件Chess Back Up V1.0详解》 在信息技术日新月异的今天,各类软件应运而生,满足人们在不同领域的需求。其中,棋类游戏作为智慧的竞技场,也有相应的数字化产品,如我们今天要讨论的"Chess Back Up V...

    程序员内功修炼-V1.0和面试思维导图.zip

    《程序员内功修炼-V1.0》是一本旨在提升程序员技术实力和面试技巧的资源集合。这份资料包包含了两个核心部分:《程序员内功修炼-V1.0》PDF文档和一个思维导图,两者都是为了帮助程序员在求职过程中增强竞争力。 PDF...

    理想搜索 v1.0

    "理想搜索 v1.0"通过这个接口,可以快速检索到天网已收录的FTP文件信息,大大提高了搜索效率。 在使用"理想搜索 v1.0"时,用户只需输入关键词,系统就会返回相关的FTP文件列表,包括文件名、大小、路径、日期等详细...

    TI v1.0B

    "TI v1.0B"是一款专为用户提供高效、轻量级浏览体验的网络软件。其核心特性在于其低资源占用率,这意味着即使在配置较低的计算机上也能流畅运行,不会因为浏览器的运行而拖慢整体系统性能。此外,这款浏览器还具备了...

    KuangSimpeBBS v1.0.zip

    《KuangSimpleBBS v1.0:一个基础的在线论坛系统》 KuangSimpleBBS v1.0是一款开源的、基于Web的论坛系统,适用于初学者进行学习和实践,也适合作为毕业设计论文的参考案例。该系统的核心在于提供了一个基本的交互...

    学生管理系统V1.0

    《学生管理系统V1.0深度解析》 学生管理系统V1.0是一款基于VC++开发的教育信息化工具,专为学校日常教学管理设计。系统的核心目标是优化学生信息管理,提高工作效率,减少人为错误,实现教育数据的信息化和智能化。...

    浪漫抓包浏览器V1.0

    《浪漫抓包浏览器V1.0:傻瓜式数据分析详解》 在信息技术高速发展的今天,数据已经成为企业乃至个人生活中不可或缺的一部分。数据的收集、分析与理解对于决策制定、业务优化至关重要。而“浪漫抓包浏览器V1.0”便是...

    飞鸟个人相册 V1.0

    在"飞鸟个人相册 V1.0"中,ASP主要负责后台数据处理,包括用户登录验证、照片上传、删除、排序等操作。通过与数据库的交互,ASP确保了用户数据的安全存储和快速访问。同时,ASP还可以根据用户需求动态生成页面,提供...

    DBExportDoc V1.0 For MySQL

    《DBExportDoc V1.0 For MySQL:数据库规范化导出详解》 在信息化时代,数据库管理扮演着至关重要的角色。为了高效地管理和分析数据,工具的使用显得尤为关键。DBExportDoc V1.0 For MySQL就是这样一款专为MySQL...

    程序员内功修炼-V1.0.pdf

    本文档"程序员内功修炼-V1.0.pdf"是一位大四学生在入职鹅厂(腾讯)前,结合自己四年学习和实践经验整理出的宝贵资料,涵盖了程序员在计算机科学领域的核心知识,主要包括数据结构与算法、操作系统以及计算机网络等...

    java最新算法大全v1.0

    4. **排序算法**:详述各种排序算法,包括冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序、计数排序、桶排序、基数排序等,分析其优缺点和适用场景。 5. **查找算法**:讲解线性查找、二分查找、哈希...

    深呼吸DLOG v1.0

    除了基础功能,DLOG v1.0可能还具备一些进阶特性,如搜索功能,帮助用户快速找到特定内容;备份与恢复功能,以防数据丢失;以及社交分享功能,让用户可以将自己的日志片段分享到社交媒体上。 至于“88vsblog”这个...

    JR Book Pro v1.0

    《JR Book Pro v1.0》是一款专注于留言板功能的应用程序,旨在为用户提供便捷的互动交流平台。这款软件的核心是它的留言板系统,允许访客在不登录或者注册的情况下也能留下自己的信息,增强了网站或平台的互动性和...

    SQL21日自学通(V1.0)

    **标题解析**:“SQL21日自学通(V1.0)”旨在通过为期21天的学习计划帮助读者从零基础快速掌握SQL语言的基础知识及高级应用技巧。 **描述解析**:“SQL21 数据库 详解!SQL21日自学通(V1.0) 让你21日 从SQL 菜鸟 到 ...

    W8C WebFTP v1.0

    【W8C WebFTP v1.0】是一个专为用户提供的高效、便捷的Web-based FTP客户端软件,允许用户通过浏览器进行远程文件传输操作。这款工具的出现,使得用户无需安装传统桌面FTP客户端,只需在支持的Web环境中即可完成文件...

    expressVerticalgrid suite v1.0

    "ExpressVerticalGrid Suite v1.0" 是一个专为IT专业人士设计的软件工具包,尤其适合那些在数据库管理和数据展示方面有需求的开发者。这个工具以其高效的数据网格展示能力而闻名,它允许用户以垂直布局的方式查看和...

Global site tag (gtag.js) - Google Analytics