`
akon405
  • 浏览: 45043 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

2012/3/29----快速排序

阅读更多

前面用到了分治算法所演变出来的一种排序---归并排序。这里,我们介绍另一种分治算法演变出来的排序算法---快速排序。

快速排序通过选取数组中的关键字,把一个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]+",");
	}

}
0
0
分享到:
评论

相关推荐

    VC资料代码示例

    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

    ### Knight’s Microsoft SQL Server 2012 Integration Services 24-Hour Trainer #### 概述 本教材《Knight’s Microsoft SQL Server 2012 Integration Services 24-Hour Trainer》旨在为读者提供全面而深入的学习...

    Visual Basic 2012 Programmer's Reference VB2012程序员参考手册

    本书由经验丰富的软件工程师Rod Stephens撰写,深入浅出地讲解了Visual Basic 2012的各项功能和技术要点,旨在帮助读者快速掌握这门语言,并能够熟练地应用于实际项目开发中。 #### 二、主要内容概述 ##### 第一...

    针式PinPKM-V201506(免费无使用限制)

    3.文件夹快速定位搜索来分析自己的知识体系 4.支持本地智能备份、网盘备份等提升知识文档的安全性 5.支持多维分类、标签、多文档关联等方式来归类整理自己的文档 6.支持共享知识库来和同事分享自己的专业研究结果 7....

    PinPKM-V201525(官网发布的最后一个免费无使用限制版本)

    3.文件夹快速定位搜索来分析自己的知识体系 4.支持本地智能备份、网盘备份等提升知识文档的安全性 5.支持多维分类、标签、多文档关联等方式来归类整理自己的文档 6.支持共享知识库来和同事分享自己的专业研究结果 7....

    pandas文档-英文

    - **v0.8.0 (2012年6月29日)** - 更新内容详述:新增了多项重要功能,改进了用户界面。 - **v.0.7.3 (2012年4月12日)** - 更新内容详述:修复了已知的bug,提高了数据处理速度。 - **v.0.7.2 (2012年3月16日)** ...

    2012年1月自考数据结构试题真题1

    ### 数据结构知识点解析 #### 一、单项选择题解析 **1. 每个结点有且仅有一个直接前趋和多个(或无)直接后继...快速排序首先选取基准元素46,将小于46的元素放置在左边,大于46的元素放置在右边,得到一次划分的结果。

    2012创新工场校园招聘笔试题

    ### 2012创新工场校园招聘笔试题解析 #### 单选题解析 **1. 二分法查找的最大比较次数** 题目要求找出在98个已排序的元素中,采用二分法查找的最大比较次数。对于二分查找算法而言,每次查找都将查找范围减半。...

    考研-数据结构-殷人昆.zip

    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 ...

    The GNU C Library Reference Manual

    - **快速排序**:如`qsort`函数用于对数组进行快速排序。 - **二分查找**:如`bsearch`函数用于在已排序的数组中查找指定元素。 - **散列表**:介绍如何使用散列表进行高效的数据查找。 #### 十、模式匹配 第10章...

    java面试题大全(2012版)

    用JAVA实现一个快速排序。 79 11、有数组a[n],用java代码将数组元素顺序颠倒 80 12.金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-&gt;(一千零一拾一元整)输出。 81 三. html&JavaScript;&ajax;...

    卑微的新标签页「Humble New Tab Page」-crx插件

    2012年6月6日至8月30日•添加选项以打开新选项卡中的链接•支持本地文件获取背景图像•修复了天气错误版本1.5-2012年8月29日•天气预报现在使用Yahoo•在支持的版本1.4上启用了系统字体列表- 2012年8月10日•添加了...

    java面试宝典2012

    用JAVA实现一个快速排序。 86 11、有数组a[n],用java代码将数组元素顺序颠倒 87 12.金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-&gt;(一千零一拾一元整)输出。 88 三. html&JavaScript;&ajax;...

    Java面试宝典2012版

    用JAVA实现一个快速排序。 79 11、有数组a[n],用java代码将数组元素顺序颠倒 80 12.金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-&gt;(一千零一拾一元整)输出。 81 三. html&JavaScript;&...

    Java面试宝典2012新版

    用JAVA实现一个快速排序。 79 11、有数组a[n],用java代码将数组元素顺序颠倒 80 12.金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-&gt;(一千零一拾一元整)输出。 81 三. html&JavaScript;&ajax;...

    javascript入门笔记

    3、1996年 Microsoft(微软) 开发了一款语言 JScript 4、1997年 网景 将Javascript 1.1 提供给了ECMA(欧洲计算机制造商联合会),ECMA 获取了 JS 的核心,称之为 ECMA Script (ES) 完整的JS组成: 1、核心(ES) 2、...

    自考02331数据结构201201.pdf

    23. 记录关键字排序:根据给出的关键字,可以使用各种排序算法(如快速排序、归并排序等)进行排序。 以上知识点涵盖了数据结构中的基本概念,如线性结构、栈、串、图、树、排序算法、文件组织、查找算法和哈夫曼...

    南京职称计算机2012年考试习题.pdf

    【南京职称计算机2012年考试习题.pdf】这份资料包含了计算机基础知识和计算机辅助方面的题目,主要涉及操作系统、网络连接、电子邮件、控制面板、计算机硬件、软件系统、汉字输入法、文件管理等方面的知识。...

    MeiuPic美优相册管理系统官方版v2.2.0

    2.1.2 发布 - 2012.01.29 MeiuPic 2.1.2 发布 1. 修复一个兼容性问题。 2. 系统安全性增强。 3. 优化升级界面,详情描述优化。 4. 三处版权信息只保留一处,还用户一个干净的系统。 5. 加入自动检查更新的开关...

Global site tag (gtag.js) - Google Analytics