文档章节

快速排序

notAcoder
 notAcoder
发布于 2013/10/04 13:13
字数 346
阅读 43
收藏 0
 * 设数组a中存放了n个数据元素,low 为数组的低端下标,high为数组的高端下标,从数组a中任取一个元素(这个元素通常取a[0])作为标准元素,
 * 一该标准元素来调整数组a中其他各个元素的位置,使排在标准元素前面的元素均小于标准元素,而排在标准元素后面均小于标准元素。
 * 这样一次排序过程后,一方面将标准元素放在了未来排好序的数组中该标准元素应该在的位置。

 * 另一方面将数组中的元素以标准元素为中心分成了两个子数组,位于标准元素左边的均小于标准元素,位于标准元素右边的均大于等于标准元素。

import java.util.Arrays;

public class QuickSort {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int arr[] = {60,55,48,37,10,90,84,36,5,10};
		quickSort(arr,0,arr.length-1);
		System.out.println(Arrays.toString(arr));
	}
	
	private static int partition(int arr[],int low,int high){
		int i,j,temp;
		i = low;
		j = high;
		temp = arr[low];
		while(i<j){
			//扫描右端
			while(i<j && temp<arr[j]) {
				j--;
			}
			if(i<j){
				arr[i] = arr[j];
				i++;
			}
			
			//在数组的左端扫描
			while(i<j && arr[i]<temp){
				i++;
			}
			if(i<j){
				arr[j] = arr[i];
				j--;
			}
		}
		arr[i] = temp;
		return i;
	}
	
	public static void quickSort(int arr[],int low ,int high){
		if(low<high){
			int i = partition(arr, low, high);
			quickSort(arr, low, i-1);
			quickSort(arr, i+1, high);
		}
	}
	
}

© 著作权归作者所有

上一篇: 二叉查找树
下一篇: 堆排序
notAcoder
粉丝 5
博文 30
码字总数 12671
作品 0
巴南
架构师
私信 提问
常用的简单排序算法集合(更新中)

/** 冒泡排序 /public static void Bubble_Sort(int[] a) {for (int i = 0; i < a.length - 1; i++) {for (int j = 0; j < a.length - i - 1; j++) {if (a[j] > a[j + 1]) {a[i] = a[i] + a[......

维特的烦恼
2014/04/26
139
1
每天学习一点儿算法--快速排序

快速排序是一种常用的优雅的排序算法,它使用分而治之的策略。 那么分而治之(D&C)是一种怎样的策略呢? 分而治之 分而治之(D&C)的要点只有两个: 找出简单的基线问题 确定如何缩小问题的...

爱吃西瓜的番茄酱
2018/01/11
0
0
快速排序详解 Java实现

一、快速排序的优缺点 对一个东西,首先要讲他的利与弊,才知道怎么使用它。快速排序适用于各种不同的输入数据且在一般应用中比其他排序都要快得多。快速排序引人注目的特点包括它是原地排序...

小车车
2016/09/03
67
0
好程序员Java教程教你5分钟了解快速排序

好程序员Java教程教你5分钟了解快速排序,前言: 快速排序是面试中经常会问到的一种排序算法,对比其他一些排序算法,快速排序的平均时间相对较少。 快速排序思想介绍 快速排序使用了分治的思...

好程序员IT
06/21
38
0
快速排序算法QuickSort

1.说明 快速排序法(quicksort)是目前所公认最快的排序方法之一(视解题的对象而定),虽然快速排序法在最差状况下可以达O(n2),但是在多数的情况下,快速排序法的效率表现是相当不错的。快...

嗯哼9925
2017/12/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Replugin借助“UI进程”来快速释放Dex

public static boolean preload(PluginInfo pi) { if (pi == null) { return false; } // 借助“UI进程”来快速释放Dex(见PluginFastInstallProviderProxy的说明) return PluginFastInsta......

Gemini-Lin
今天
4
0
Hibernate 5 的模块/包(modules/artifacts)

Hibernate 的功能被拆分成一系列的模块/包(modules/artifacts),其目的是为了对依赖进行独立(模块化)。 模块名称 说明 hibernate-core 这个是 Hibernate 的主要(main (core))模块。定义...

honeymoose
今天
4
0
CSS--属性

一、溢出 当内容多,元素区域小的时候,就会产生溢出效果,默认是纵向溢出 横向溢出:在内容和容器之间再套一层容器,并且内部容器要比外部容器宽 属性:overflow/overflow-x/overflow-y 取值...

wytao1995
今天
4
0
精华帖

第一章 jQuery简介 jQuery是一个JavaScript库 jQuery具备简洁的语法和跨平台的兼容性 简化了JavaScript的操作。 在页面中引入jQuery jQuery是一个JavaScript脚本库,不需要特别的安装,只需要...

流川偑
今天
7
0
语音对话英语翻译在线翻译成中文哪个方法好用

想要进行将中文翻译成英文,或者将英文翻译成中文的操作,其实有一个非常简单的工具就能够帮助完成将语音进行翻译转换的软件。 在应用市场或者百度手机助手等各大应用渠道里面就能够找到一款...

401恶户
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部