实现代码如下:原理是利用了快速排序‘分治’思想,判断左边区域的大小是否在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语言快速排序算法的改进,即快速排序与直接插入排序算法相结合的实现过程。在C语言程序设计中,实现大量的内部排序应用时,所寻求的目的就是找到一个...
排序算法是计算机科学中的基础概念之一,主要用于将一系列数据按照特定规则进行排列。根据数据处理方式的不同,排序算法大致分为两大类:比较排序与非比较排序。 #### 比较排序 比较排序是指通过比较两个元素的大小...
数据结构课程设计中的内部排序算法比较是一个非常重要的主题。它主要涵盖了各种内部排序算法的特点、应用场景以及它们之间的性能差异等内容。 ### 内部排序算法概述 #### 什么是内部排序算法? 内部排序算法是指...
标题"利用拓扑排序算法判别有向环"指出,我们可以通过执行拓扑排序来检测有向图中是否存在环。这是因为如果在有向图中存在环,那么尝试进行拓扑排序时会出现矛盾,无法为所有节点找到一个无环的线性顺序。具体来说,...
在计算机科学领域,排序算法是数据处理中至关重要的一部分,它涉及到如何有效地重新排列一组数据,使其按照特定的顺序排列。本资源"MoreWindows白话经典算法之七大排序(高清版).pdf"提供了一套详尽的排序算法讲解,...
在计算机科学领域,排序算法是数据结构与算法中不可或缺的一部分,它们用于将一组无序的数据按照特定顺序排列。本合集包含多种经典的排序算法,每种算法都是通过继承自一个基类并实现其具体逻辑来实现的。下面,我们...
在计算机科学领域,排序算法是数据结构与算法中不可或缺的一部分,它们用于对一组数据进行排列,使得数据按照特定的顺序(通常为升序或降序)进行组织。本篇文章将详细探讨五种主要的排序算法:插入排序、归并排序、...
在数据结构的学习中,排序算法是一项至关重要的内容。实验报告“数据结构实验报告(排序算法)”涵盖了多种经典的排序算法,旨在通过实际编程加深学生对这些算法的理解和应用能力。以下将详细介绍这些排序算法及其...
在IT领域,排序算法是计算机科学的基础之一,广泛应用于数据处理和数据分析。本文将深入探讨标题和描述中提及的几种排序算法:直接插入排序、希尔排序(SHELL排序)、冒泡排序、快速排序、简单选择排序、堆排序以及...
根据给定的信息,本文将详细介绍数据结构中几种常见的排序算法:冒泡排序、直接插入排序、折半插入排序、希尔排序、快速排序、选择排序、二路递归排序(这里可能指的是二路归并排序)以及堆排序。这些排序算法在...
堆排序是利用堆这种数据结构实现的一种排序算法。它首先构建一个大顶堆或小顶堆,然后依次取出最大值或最小值,放入已排序序列的末尾,再调整剩余元素使之重新满足堆的性质,重复此过程直到所有元素都被排序。堆排序...
在计算机科学领域,排序算法是数据结构与算法中不可或缺的一部分,它们用于将一组无序的数据按照特定顺序排列。本文将详细介绍七种基本排序算法,包括插入排序、快速排序、希尔排序、归并排序、选择排序、冒泡排序...
Hoare提出的快速排序是一种高效的分治策略排序算法。其基本思想是选取一个基准元素,将数组分为两部分,一部分所有元素都小于基准,另一部分所有元素都大于基准,然后对这两部分递归地进行快速排序。 2. **堆排序*...
- 通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。...
在编程领域,排序算法是数据结构与算法中的基础部分,对于C#开发者来说,掌握不同的排序算法至关重要。本文将深入探讨C#语言中常见的几种排序算法,包括它们的工作原理、性能特点以及如何在C#代码中实现。 1. **...
在C#中,虽然可以手动实现这些排序算法,但.NET框架提供了一个内置的排序方法`Array.Sort()`,它使用了一种名为快速排序的高效排序算法。在处理大量数据时,使用内置的排序方法通常比自定义排序算法更有效率。 总结...
排序算法是计算机科学中基础且重要的算法之一,它们在处理大量数据时起到关键作用。在Java编程中,了解并掌握不同的排序算法有助于优化代码性能,提高程序效率。以下是对Java八大排序算法的详细介绍: 1. **直接...
2. **桶排序**:桶排序是一种分布式排序算法,将待排序元素分布到若干个“桶”中,每个桶内部再进行排序,最后按顺序依次取出所有桶中的元素。适用于数据分布均匀的情况,例如对一组随机整数进行排序。 3. **计数...