`
jungle1171
  • 浏览: 3928 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

[JAVA]复习各种排序算法--快排

阅读更多

一直在WEB上头忙活,SSH啦,EXT啦,Flex啦,乱七八糟的前端、框架。

近日由于一个机会警醒了作为基础的算法已经差劲到一定地步了~~~

先补了补排序算法,贴点自己的代码上来,都是已经运行过的。看了看时间,排10个数字不到1ms,进入排序方法10次。。。快。。。真快。。。

快排基本思想http://jackey25.iteye.com/blog/456646这位哥们已经说的非常清楚了。。。

public class QuickSort {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		QuickSort qs = new QuickSort();
		int[] toSort = new int[] { 2, -8, 99, 0, -1, 37, 43, 88, 2, 82 };
		long ss = System.currentTimeMillis();
		toSort = qs.quickSort(toSort, 0, 0, toSort.length - 1);
		println(System.currentTimeMillis() - ss);
		printAll(toSort);
	}

	//int cnt;
	/**
	 * @param toSort
	 * @param standard 作为比较标准数值的位置
	 * @param left 左端起点位置
	 * @param right 右端起点位置
	 */
	private int[] quickSort(int[] toSort,int standard, int left, int right) {
		//print(cnt++ +"| standard: "+standard+",left:"+left+",right:"+right+": ");
		//记住起始结束的位置
		int l = left;
		int r = right;
		//没有相遇,则一直移动
		while(l < r){
			while(r > left && l < r){
				//从右侧找到第一个小于标准数值的,结束右端本次查找
				if(toSort[r] < toSort[standard]){
					swap(toSort,r,standard);
					break;
				}
				r--;
			}
			while(l < right && l < r){
				//从左侧找到第一个大于标准数值的,结束左端本次查找
				if(toSort[l] > toSort[standard]){
					swap(toSort,l,standard);
					break;
				}
				l++;
			}
		}
		//没有小到1个元素1组之前继续分组
		if(l > left){
			quickSort(toSort,left,left,l-1);
		}
		if(r < right){
			quickSort(toSort,r+1,r+1,right);
		}
		return toSort;
	}

	/**
	 * 交换数值
	 */
	private int[] swap(int[] toSort, int i, int j) {
		int temp = toSort[i];
		toSort[i] = toSort[j];
		toSort[j] = temp;
		return toSort;
	}

	private static void printAll(int[] toSort) {
		for (int i = 0; i < toSort.length; i++) {
			System.out.print(toSort[i] + ",");
		}
		System.out.println();
	}
}
分享到:
评论

相关推荐

    堆排序详细图解(通俗易懂)+排序算法-堆排序(超详细)

    堆排序详细图解(通俗易懂)+排序算法----堆排序(超详细)堆排序详细图解(通俗易懂)+排序算法----堆排序(超详细)堆排序详细图解(通俗易懂)+排序算法----堆排序(超详细)堆排序详细图解(通俗易懂)+排序算法...

    详解Java常用排序算法-选择排序

    详解Java常用排序算法-选择排序 选择排序(Selection Sort)是一种简单的排序算法,它的基本思想是每次从待排序的元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的元素排完。 选择...

    最快的排序算法 javahash实现-Java-哈希算法-最快的实现,排序算法数据结构

    Java哈希算法排序算法数据结构知识点总结 以下是关于Java哈希算法排序算法数据结构的知识点总结: 1. 哈希算法的速度问题:在讨论哈希算法的速度问题时,需要考虑到哈希函数的选择和实现方式。在大多数情况下,...

    各种排序算法比较(java实现)

    本文将详细探讨标题所提及的几种排序算法:合并排序、插入排序、希尔排序、快速排序、冒泡排序以及桶排序,并结合Java语言的实现进行解析。 1. **合并排序(Merge Sort)**: 合并排序是一种基于分治策略的排序算法...

    [Java算法-排序]-堆排序.java

    该资源提供了Java中实现堆排序的全面指南。文档中涵盖了堆排序的基本概念,包括如何对数组进行排序以及如何在Java中实现堆排序。此外,文档还包括一个逐步指南,介绍了如何在Java中实现堆排序,包括详细的代码示例和...

    java排序算法--Arrange(java算法源码)

    //表示待排数组的元素个数。 private long numLeft;//用于存储剩余排列序列个数的成员变量。 private long total;//用于存储排列序列总数的成员变量。 public Arrange(int n){ this.n=n; reset();//调用...

    lz4压缩算法java实现-LZ4-极快的压缩算法,排序算法数据结构 最快的排序算法

    LZ4压缩算法java实现 LZ4压缩算法是lossless压缩算法,提供了高达500 MB/s每个核心的压缩速度,且可以根据多核CPU进行扩展。它具有极快的解压速度,速度可达多GB/s每个核心,通常达到多核系统中的RAM速度限制。速度...

    Java数据结构和算法-带书签目录扫描版

    《Java数据结构和算法-带书签目录扫描版》是一本深入探讨Java编程语言中数据结构和算法的书籍。此扫描版特别包含了完整的书签目录,使得读者在电子版阅读时能够快速定位到所需章节,提高了学习和查阅的效率。 在...

    常用排序算法--堆排序

    常用的排序算法--堆排序,通过创建堆的方法进行排序

    java代码-使用java解决java排序之-快速排序的问题的源代码

    java代码-使用java解决java排序之-快速排序的问题的源代码 ——学习参考资料:仅用于个人学习使用!

    排序算法 -- 插入排序

    **插入排序**是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。这种算法对大数据量的处理效率较低,但对于小规模数据或者部分有序的...

    排序算法 - Axb的自我修养1

    - 快速排序:使用分治策略,通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后再分别对这两部分记录继续进行排序。平均时间复杂度为O(N log N),最坏情况下为O(N^2)...

    Java各种排序算法(含代码)

    以下是对标题和描述中提到的Java各种排序算法的详细解释,以及它们的实现代码概述。 1)**插入排序(直接插入排序、希尔排序)** - **直接插入排序**:它是一种简单的排序算法,工作原理类似于打扑克牌。遍历数组...

    排序算法 -- 冒泡排序

    冒泡排序是一种基础且经典的排序算法,它的基本思想是通过不断地交换相邻的逆序元素,使得每一轮排序后,最大的元素“浮”到数组的末尾。这个过程就像水底下的气泡逐渐升至水面一样,因此得名“冒泡排序”。 在Java...

    JAVA数据结构与算法-第二版

    《JAVA数据结构与算法-第二版》是一本深入探讨计算机科学基础的著作,由美国知名计算机科学家Robert Lafore撰写,并由计晓云、赵研等人精心翻译为中文版。本书旨在帮助读者理解并掌握如何在Java编程环境中有效地设计...

    Java排列组合算法 - 郭睿的专栏 - CSDN博客

    Java排列组合算法 - 郭睿的专栏 - CSDN博客Java排列组合算法 - 郭睿的专栏 - CSDN博客

    排序算法 -- 选择排序

    **选择排序**是一种简单直观的排序算法,它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法,因为它可能会...

    IT面试笔试-各种排序算法Java实现

    在IT面试和笔试中,掌握各种排序算法的实现是必不可少的技能。本文将详细介绍几种经典的排序算法,并提供Java语言的实现代码,包括冒泡排序、插入排序、选择排序和快速排序。这些算法不仅在面试中常被考察,而且在...

    数据结构--九种排序算法 --排序001.cpp

    此文件为数据结构中的九种排序算法,包含一些排序方法的过程,其九种排序包括:直接插入排序,折半插入排序,希尔排序,冒泡排序,快速排序,选择排序,堆排序,归并排序,基数排序!

Global site tag (gtag.js) - Google Analytics