前面用到了分治算法所演变出来的一种排序---归并排序。这里,我们介绍另一种分治算法演变出来的排序算法---快速排序。
快速排序通过选取数组中的关键字,把一个A[n]数组划分为3部分:A[key]=关键字,A[0...key-1]={比关键字小的元素},A[key+1...n-1]={比关键字大的元素}。然后递归调用这个过程便可实现对数组的排序。
/*
*分治算法引申出来的又一种排序算法---快速排序算法
*version 1.0 2012、3、29
*author akon
*/
package com.akon405.www;
public class QuickSort {
public int division(int[] A,int left,int right){
int key=A[left];//确定最右边的数组元素为关建数值
int temp;
//下面循环可以把输入的数组A以key值为界限,分为两拨。key前面的数值比key小,key后面的数值比key大
while(left!=right){
while(left<right&&key<A[right])
right--;//从右向左找出比key小的第一个数值,下标为right
temp=A[right];
A[right]=A[left];
A[left]=temp;
while(left<right&&key>A[left])
left++;//从左向右找出比key大的第一个数值,下标为left
temp=A[right];
A[right]=A[left];
A[left]=temp;
}
return left;//分割点的下标,left=right
}
public void quickSort(int[] A,int left,int right){
int i;
if(left<right){
i=division(A,left,right);
quickSort(A,left,i-1);//对key前面的数组进行排序
quickSort(A,i+1,right);//对key后面的数组进行排序
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] A={20,39,10,4,87,46,83,57};
QuickSort qs=new QuickSort();
int left=0;
int right=A.length-1;
qs.quickSort(A,left,right);
System.out.print("排序结果:");
for(int i=0;i<6;i++)
System.out.print(A[i]+",");
}
}
分享到:
相关推荐
2014/10/14 16:47 3,523 使用VC库函数中的快速排序函数-QSort.rar 2009/07/03 13:22 16,163 创建椭圆窗体.rar 2009/07/05 08:49 16,252 半透明别的窗口.rar 2010/08/06 15:38 3,248 启动闪屏.rar 2007/10/01 13:41 ...
### Knight’s Microsoft SQL Server 2012 Integration Services 24-Hour Trainer #### 概述 本教材《Knight’s Microsoft SQL Server 2012 Integration Services 24-Hour Trainer》旨在为读者提供全面而深入的学习...
本书由经验丰富的软件工程师Rod Stephens撰写,深入浅出地讲解了Visual Basic 2012的各项功能和技术要点,旨在帮助读者快速掌握这门语言,并能够熟练地应用于实际项目开发中。 #### 二、主要内容概述 ##### 第一...
3.文件夹快速定位搜索来分析自己的知识体系 4.支持本地智能备份、网盘备份等提升知识文档的安全性 5.支持多维分类、标签、多文档关联等方式来归类整理自己的文档 6.支持共享知识库来和同事分享自己的专业研究结果 7....
3.文件夹快速定位搜索来分析自己的知识体系 4.支持本地智能备份、网盘备份等提升知识文档的安全性 5.支持多维分类、标签、多文档关联等方式来归类整理自己的文档 6.支持共享知识库来和同事分享自己的专业研究结果 7....
- **v0.8.0 (2012年6月29日)** - 更新内容详述:新增了多项重要功能,改进了用户界面。 - **v.0.7.3 (2012年4月12日)** - 更新内容详述:修复了已知的bug,提高了数据处理速度。 - **v.0.7.2 (2012年3月16日)** ...
### 数据结构知识点解析 #### 一、单项选择题解析 **1. 每个结点有且仅有一个直接前趋和多个(或无)直接后继...快速排序首先选取基准元素46,将小于46的元素放置在左边,大于46的元素放置在右边,得到一次划分的结果。
### 2012创新工场校园招聘笔试题解析 #### 单选题解析 **1. 二分法查找的最大比较次数** 题目要求找出在98个已排序的元素中,采用二分法查找的最大比较次数。对于二分查找算法而言,每次查找都将查找范围减半。...
8.3.2 快速排序 241 8.4 选择类排序 243 8.4.1 简单选择排序 243 8.4.2 堆排序 244 8.5 二路归并排序 247 8.6 基数排序 248 8.7 外部排序 252 8.7.1 概念与流程 252 8.7.2 置换-选择排序 253 8.7.3 佳归并树 254 ...
- **快速排序**:如`qsort`函数用于对数组进行快速排序。 - **二分查找**:如`bsearch`函数用于在已排序的数组中查找指定元素。 - **散列表**:介绍如何使用散列表进行高效的数据查找。 #### 十、模式匹配 第10章...
用JAVA实现一个快速排序。 79 11、有数组a[n],用java代码将数组元素顺序颠倒 80 12.金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出。 81 三. html&JavaScript;&ajax;...
2012年6月6日至8月30日•添加选项以打开新选项卡中的链接•支持本地文件获取背景图像•修复了天气错误版本1.5-2012年8月29日•天气预报现在使用Yahoo•在支持的版本1.4上启用了系统字体列表- 2012年8月10日•添加了...
用JAVA实现一个快速排序。 86 11、有数组a[n],用java代码将数组元素顺序颠倒 87 12.金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出。 88 三. html&JavaScript;&ajax;...
用JAVA实现一个快速排序。 79 11、有数组a[n],用java代码将数组元素顺序颠倒 80 12.金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出。 81 三. html&JavaScript;&...
用JAVA实现一个快速排序。 79 11、有数组a[n],用java代码将数组元素顺序颠倒 80 12.金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出。 81 三. html&JavaScript;&ajax;...
3、1996年 Microsoft(微软) 开发了一款语言 JScript 4、1997年 网景 将Javascript 1.1 提供给了ECMA(欧洲计算机制造商联合会),ECMA 获取了 JS 的核心,称之为 ECMA Script (ES) 完整的JS组成: 1、核心(ES) 2、...
23. 记录关键字排序:根据给出的关键字,可以使用各种排序算法(如快速排序、归并排序等)进行排序。 以上知识点涵盖了数据结构中的基本概念,如线性结构、栈、串、图、树、排序算法、文件组织、查找算法和哈夫曼...
【南京职称计算机2012年考试习题.pdf】这份资料包含了计算机基础知识和计算机辅助方面的题目,主要涉及操作系统、网络连接、电子邮件、控制面板、计算机硬件、软件系统、汉字输入法、文件管理等方面的知识。...
2.1.2 发布 - 2012.01.29 MeiuPic 2.1.2 发布 1. 修复一个兼容性问题。 2. 系统安全性增强。 3. 优化升级界面,详情描述优化。 4. 三处版权信息只保留一处,还用户一个干净的系统。 5. 加入自动检查更新的开关...