`

利用快速排序算法快速的取出前一千条数据

 
阅读更多

实现代码如下:原理是利用了快速排序‘分治’思想,判断左边区域的大小是否在1000范围之内,如果是就丢弃右边区域的递归调用,从而减少了递归和循环的调用。

测试结果:长度为1000w的数组,在30-200ms以内完成。

测试环境:window xp ,Celeron双核cpu 2.19GHZ,2G内存。

	public static void _sort( int[] arr , int left , int right ){
		if( left >= right ) return;
		
		int markIndex = right;
		int markVal = arr[markIndex];
		
		int lt = left - 1;
		int rt = right;
		
		while( true ){
			
			while( arr[++lt] < markVal );
			
			while( rt > left && arr[--rt] > markVal );
			
			if( lt >= rt ) break;
			
			swap( arr , lt , rt );
		}
		swap( arr , lt , markIndex );
		
//		if( (arr.length - 2 - lt) < 1000 )
			_sort( arr , left , lt-1  );
		if( lt < 1000 )
			_sort( arr , lt+1 , right );
	}
	
	private static void swap( int[] arr , int lt , int rt ){
		int temp = arr[lt];
		arr[lt]  = arr[rt];
		arr[rt]  = temp;
	}
	
	public static void sort( int[] arr ){
		_sort( arr , 0 , arr.length-1 );
	}

 

分享到:
评论

相关推荐

    算法与数据结构的排序算法

    在计算机科学领域,排序算法是数据处理中至关重要的一部分,它涉及到如何有效地重新排列一组数据,使其按照特定的顺序(如升序或降序)排列。本文将深入探讨排序算法的基本概念、常见类型以及它们在实际应用中的作用...

    浅析C语言快速排序算法的改进.pdf

    快速排序算法是计算机程序设计中的一种重要操作, 本文论述了C语言快速排序算法的改进,即快速排序与直接插入排序算法相结合的实现过程。在C语言程序设计中,实现大量的内部排序应用时,所寻求的目的就是找到一个...

    java实现数据结构常见排序算法及详解

    排序算法是计算机科学中的基础概念之一,主要用于将一系列数据按照特定规则进行排列。根据数据处理方式的不同,排序算法大致分为两大类:比较排序与非比较排序。 #### 比较排序 比较排序是指通过比较两个元素的大小...

    数据结构课程设计(内部排序算法比较).

    数据结构课程设计中的内部排序算法比较是一个非常重要的主题。它主要涵盖了各种内部排序算法的特点、应用场景以及它们之间的性能差异等内容。 ### 内部排序算法概述 #### 什么是内部排序算法? 内部排序算法是指...

    利用拓扑排序算法判别有向环

    标题"利用拓扑排序算法判别有向环"指出,我们可以通过执行拓扑排序来检测有向图中是否存在环。这是因为如果在有向图中存在环,那么尝试进行拓扑排序时会出现矛盾,无法为所有节点找到一个无环的线性顺序。具体来说,...

    排序算法经典讲解

    在计算机科学领域,排序算法是数据处理中至关重要的一部分,它涉及到如何有效地重新排列一组数据,使其按照特定的顺序排列。本资源"MoreWindows白话经典算法之七大排序(高清版).pdf"提供了一套详尽的排序算法讲解,...

    各种排序算法合集

    在计算机科学领域,排序算法是数据结构与算法中不可或缺的一部分,它们用于将一组无序的数据按照特定顺序排列。本合集包含多种经典的排序算法,每种算法都是通过继承自一个基类并实现其具体逻辑来实现的。下面,我们...

    5大排序算法

    在计算机科学领域,排序算法是数据结构与算法中不可或缺的一部分,它们用于对一组数据进行排列,使得数据按照特定的顺序(通常为升序或降序)进行组织。本篇文章将详细探讨五种主要的排序算法:插入排序、归并排序、...

    数据结构实验报告(排序算法)

    在数据结构的学习中,排序算法是一项至关重要的内容。实验报告“数据结构实验报告(排序算法)”涵盖了多种经典的排序算法,旨在通过实际编程加深学生对这些算法的理解和应用能力。以下将详细介绍这些排序算法及其...

    实现各种排序算法并分析与比较.rar_shell排序_各种排序_各种排序算法_堆排序_快速排序

    在IT领域,排序算法是计算机科学的基础之一,广泛应用于数据处理和数据分析。本文将深入探讨标题和描述中提及的几种排序算法:直接插入排序、希尔排序(SHELL排序)、冒泡排序、快速排序、简单选择排序、堆排序以及...

    排序 算法 数据结构中的各种排序算法

    根据给定的信息,本文将详细介绍数据结构中几种常见的排序算法:冒泡排序、直接插入排序、折半插入排序、希尔排序、快速排序、选择排序、二路递归排序(这里可能指的是二路归并排序)以及堆排序。这些排序算法在...

    课程设计,数据结构内部排序的算法比较

    堆排序是利用堆这种数据结构实现的一种排序算法。它首先构建一个大顶堆或小顶堆,然后依次取出最大值或最小值,放入已排序序列的末尾,再调整剩余元素使之重新满足堆的性质,重复此过程直到所有元素都被排序。堆排序...

    7种基本排序算法

    在计算机科学领域,排序算法是数据结构与算法中不可或缺的一部分,它们用于将一组无序的数据按照特定顺序排列。本文将详细介绍七种基本排序算法,包括插入排序、快速排序、希尔排序、归并排序、选择排序、冒泡排序...

    各种排序算法的实验(源代码+实验报告)

    Hoare提出的快速排序是一种高效的分治策略排序算法。其基本思想是选取一个基准元素,将数组分为两部分,一部分所有元素都小于基准,另一部分所有元素都大于基准,然后对这两部分递归地进行快速排序。 2. **堆排序*...

    数据结构 插入排序、快速排序、选择排序、选择排序

    - 通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。...

    C#排序算法(C#)

    在编程领域,排序算法是数据结构与算法中的基础部分,对于C#开发者来说,掌握不同的排序算法至关重要。本文将深入探讨C#语言中常见的几种排序算法,包括它们的工作原理、性能特点以及如何在C#代码中实现。 1. **...

    C#常用排序算法

    在C#中,虽然可以手动实现这些排序算法,但.NET框架提供了一个内置的排序方法`Array.Sort()`,它使用了一种名为快速排序的高效排序算法。在处理大量数据时,使用内置的排序方法通常比自定义排序算法更有效率。 总结...

    java八大排序算法

    排序算法是计算机科学中基础且重要的算法之一,它们在处理大量数据时起到关键作用。在Java编程中,了解并掌握不同的排序算法有助于优化代码性能,提高程序效率。以下是对Java八大排序算法的详细介绍: 1. **直接...

    排序算法: 冒泡排序,桶排序,计数排序,堆排序,插入排序,合并排序,快速排序,基数排序,选择排序,希尔排序 实现语言: C++

    2. **桶排序**:桶排序是一种分布式排序算法,将待排序元素分布到若干个“桶”中,每个桶内部再进行排序,最后按顺序依次取出所有桶中的元素。适用于数据分布均匀的情况,例如对一组随机整数进行排序。 3. **计数...

Global site tag (gtag.js) - Google Analytics