排序
gavenyeah
北京师范大学计算机专业研究生
展开
-
Java排序算法(二)--堆排序(HeapSort)
堆排序的思想是: 1.比较第i个位置与第2i和2i+1个位置上的节点值,将较大的元素上移; 2.重复1,使最大的元素移到根节点; 3.将根节点与最末的元素交换位置,递归1,2,3使剩下的n-1个元素也依次移到当前最后。static void heapSort( int[]a ){ for(int n=a.length;n>0;n--){原创 2016-03-21 09:30:03 · 460 阅读 · 0 评论 -
Java排序算法(三)--归并排序(MergeSort)递归与非递归的实现
归并排序的思想是: 1.将原数组首先进行两个元素为一组的排序,然后合并为四个一组,八个一组,直至合并整个数组; 2.合并两个子数组的时候,需要借助一个临时数组,用来存放当前的归并后的两个数组; 3.将临时数组复制回原数组对应的位置。public static void mergeSort (int [] data ,int left,int right){ //left原创 2016-03-21 09:39:22 · 8513 阅读 · 3 评论 -
java排序算法(九)--排序算法总结分析
排序是实际生活中经常遇到的问题,不同的排序方法有不同的试用情况,我们应灵活应用。原创 2016-03-21 14:06:01 · 594 阅读 · 0 评论 -
Java排序算法(七)--简单选择排序(SelectionSort)
简单选择排序:每次选择一个当前最小的数字放在最终位置上。public static int [] selectionSort( int []d ){ for(int j =0;j <d .length;j ++){ int min =j ; for(int i =j +1;i <d .length;i ++){原创 2016-03-21 10:47:33 · 588 阅读 · 0 评论 -
Java排序算法(八)--基数排序(RadixSort)
基数排序:import java.util.LinkedList;publicstaticvoidradixSort (int[]data,intradix,intdigits){ //radix表示基数(进制),digits表示最大数值位数 LinkedList<LinkedList> queue= new LinkedList<LinkedList>();原创 2016-03-21 10:55:47 · 2149 阅读 · 0 评论 -
Java排序算法(六)--冒泡排序(交换排序)
思想:从后往前,如果d[i]public static int [] bubbleSort( int []d ){ for(int j=0;j<d.length;j++){ for(int i=d.length-1;i>0;i--){ if(d[i]<d[i-1]){ int temp =d [i原创 2016-03-21 10:46:12 · 395 阅读 · 0 评论 -
Java排序算法(五)--希尔排序(ShellSort)
希尔排序(插入排序-渐减增量排序diminishing increment sort): 思想:1.将原始数组按照增量分解为多个数组,分别按插入排序调好子序列的顺序; 2. 减小增量,重复第一步,直至增量为1。public static int [] shellSort (int []d ){ int h =1;原创 2016-03-21 10:43:44 · 1288 阅读 · 0 评论 -
Java排序算法(四)--直接插入排序(InsertSort)
直接插入排序是最直接,最基础的一种排序方法,在其他的排序或者查找算法中也经常会用到直接插入排序。思想:按顺序依次将需要排序的数字插入已排序好的队列中。将temp与d[j-1]比较,找到temp的位置,将插入位置之后的元组后移一位。public static int [] insertionSort (int []d ){ for(int i =1;i <d .length;i ++原创 2016-03-21 10:33:36 · 700 阅读 · 0 评论 -
Java排序算法(一)--快速排序(QuickSort)
快排是最重要,使用最多的一种排序方法,其思想应用在了很多其他的快速查找等算法里。主要思想是: 1.把数组的第一个元素作为基准(pivot),将数组划分; 2.比较要查找的值与pivot的大小,确定在左半边还是右半边进行递归查找public static void quickSortA(int []d,int left,int right){ //left,right原创 2016-03-21 09:08:25 · 988 阅读 · 0 评论 -
Java排序算法(十)--桶排序
前面的1~8介绍的都是基础的排序的算法,现在来介绍一种高效的排序算法–桶排序。桶排序的原理是:将数组分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是 比较排序,他不受到 O(n log n) 下限的影响。主要原理是:利用了空原创 2016-04-22 15:32:44 · 5561 阅读 · 0 评论