Java排序算法——归并排序】的更多相关文章

import java.util.Arrays; //================================================= // File Name : MergeSort //------------------------------------------------------------------------------ // Author : Common //类名:Arrays_Merge //属性: //方法: class Arrays_Merge…
public class MergeSort { private static void mergeSortTest() { int[] in = { 2, 5, 3, 8, 6, 7, 1, 4, 0, 9 }; Utils.printArray("归并排序前:",in); int a[] = mergeSort(in); Utils.printArray("归并排序后:",a); } private static int[] mergeSort(int[] ar…
java排序算法(九):归并排序…
java排序算法(一)概述 排序是程序开发中一种非常常见的操作,对一组任意的数据元素(活记录)经过排序操作后,就可以把它们变成一组按关键字排序的一组有序序列 对一个排序的算法来说,一般从下面三个方面来衡量算法的优劣. 1.时间复杂度:它主要是分析关键字的比较次数和记录的移动次数 2.空间复杂度:分析排序算法中需要多少辅助内存 3.稳定性:若两个记录A和B的关键字值相等,但排序后A.B的先后顺序保持不变.则称这种排序算法是稳定的.反之就是不稳定的. 内部排序:就现有的排序算法来看,排序大致可以分为…
java排序算法(四):冒泡排序 冒泡排序是计算机的一种排序方法,它的时间复杂度是o(n^2),虽然不及堆排序.快速排序o(nlogn,底数为2).但是有两个优点 1.编程复杂度很低.很容易写出代码 2.具有稳定性,这里的稳定性是指原序列中相同元素的相对顺序仍然保持到排序后的顺序.而堆排序和快速排序均不具有稳定性 不过一路.二路归并排序和不平衡二叉树排序的速度均比冒泡排序速度快,且具有稳定性,但速度不及堆排序.快速排序.冒泡排序是经过n-1趟子排序完成的,第i趟子排序从第1个数至n-i个数.若第…
Java排序算法(三) 三.Java排序算法总结 从这三组时间复杂度对比中,可以看出,堆排序和归并排序是不管在什么情况下发挥稳定的,快速排序好的时候表现如天才,坏情况下比较差强人意,甚至在等待排序个数小于50的时候还不如简单的冒泡,直接插入排序,选择排序. 从空间复杂度看,归并排序需要辅助空间,快速排序也有相应的空间需求,堆排序则是少量索取,大量付出. 从稳定性上看,归并排序独占鳌头. 总之,综合各项指标,经过优化的快速排序是性能最好的排序算法,但不同的场合我们也应该考虑使用不同的算法来应对.…
java排序算法(二) 二.改进排序算法 2.1希尔排序 定义:希尔排序(ShellSort)是插入排序的一种.也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本.希尔排序是非稳定排序算法. 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序:随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止. 常用的h序列(增量)由Knuth提出,该序列从1开始,通过如下公式产生:h = 3 * h +1 反过来程序需要反向计算h序列,应该使…
Java排序算法(一) 排序的基本概念和分类 1.1排序的定义 在<大话数据结构>中,排序定义为,假设含有n个记录的序列为{r1,r2,...,rn},其相应的关键字{k1,k2,...,kn},需确定1,2...n的一种排列p1,p2...pn,是其相应的关键字满足Kp1<=Kp2<=...<=Kpn(非递减或非递增)关键,即使得序列称为一个按关键字有序的序列{rp1,rp2...rp3},这样的操作称为排序. 1.2排序的稳定性 假设ki=kj(1<=i<=n…
Java排序之归并排序 1. 简介 归并排序的算法是将多个有序数据表合并成一个有序数据表.如果参与合并的只有两个有序表,则成为二路合并.对于一个原始的待排序数列,往往可以通过分割的方法来归结为多路合并排序. 2. 归并排序思路 将长度为n的待排序数组看做是由n个有序长度为1的数组组成 将其两两合并,得到长度为2的有序数组 然后再对这些子表进行合并,得到长度为4的有序数组 重复上述过程,一直到最后的子表长度为n也就完成了排序 3. 代码实例 归并排序有两种实现方式:递归和非递归.在看归并排序的代码…
总结一下Java排序算法,以便记忆. 各类排序的时间复杂度: 排序方法 时间复杂度(平均) 时间复杂度(最坏) 时间复杂度(最好) 空间复杂度 稳定性 复杂性 直接插入排序 O(n2)O(n2) O(n2)O(n2) O(n)O(n) O(1)O(1) 稳定 简单 希尔排序 O(nlog2n)O(nlog2n) O(n2)O(n2) O(n)O(n) O(1)O(1) 不稳定 较复杂 直接选择排序 O(n2)O(n2) O(n2)O(n2) O(n2)O(n2) O(1)O(1) 不稳定 简单…