Java排序算法 1)分类: 1)插入排序(直接插入排序、希尔排序) 2)交换排序(冒泡排序、快速排序) 3)选择排序(直接选择排序、堆排序) 4)归并排序 5)分配排序(箱排序、基数排序) 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 不稳定:快速排序,希尔排序,堆 ...
分类:
编程语言 时间:
2016-04-16 22:48:31
阅读次数:
229
希尔排序是插入排序的升级版,在插入排序的基础上做出了很大的改善。 ...
分类:
编程语言 时间:
2016-04-16 13:44:20
阅读次数:
199
快速排序的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要笑,然后在按此方法对这两部分数据进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。Partition1:(传统法)定义一个标准key,..
分类:
编程语言 时间:
2016-04-13 11:31:11
阅读次数:
168
简单插入排序 适用于记录较少且基本有序的记录。算法思想:给定一个存在分界线的序列,分界线左边有序,右边无序,依次将右边的没排序的数与左边序列进行比较,插入相应位置,再对分界线做出相应调整,下面用图来说明。 代码如下: 时间复杂度:最好情况O(n),最坏O(n^2)。 希尔排序 希尔排序是改进后的简单 ...
分类:
编程语言 时间:
2016-04-10 12:50:26
阅读次数:
226
数学上,线性变换的特征向量(本征向量)是一个非退化的向量,其方向在该变换下不变。该向量在此变换下缩放的比例称为其特征值(本征值)。 一个线性变换通常可以由其特征值和特征向量完全描述。特征空间是相同特征值的特征向量的集合。“特征”一词来自德语的eigen。1904年希尔伯特首先 在这个意义下使用了这个 ...
分类:
其他好文 时间:
2016-04-09 20:17:14
阅读次数:
217
今天集中把几种排序的方法列一下,当然最出名的希尔,快排,归并和其优化当然也是满载 说到希尔排序的话,不得不先提到的就是插入排序了,希尔排序就是对直接插入排序的一种优化,下面就是直接插入排序的思想 这就是直接插入排序的代码,思想很简单,代码也很简单 为什么希尔排序比直接插入排序更加优化呢?当需要排序的 ...
分类:
编程语言 时间:
2016-04-09 12:14:28
阅读次数:
247
1、插入排序插入排序的工作原理是建立有序序列,对于未排序数据,在已排序的数据从后先前扫描,找到对应的位置后插入。①从第一个元素开始,该元素被默认为有序序列。②从下一个未排序数据开始,在已经排序的序列中从后往前扫描③如果该元素小于已排序的元素,继续往前扫描④重..
分类:
编程语言 时间:
2016-04-07 19:01:16
阅读次数:
243
选择排序 实现思路: 1、将需排序的集合设为A,已经排好顺的集合为B(在未排序前B集合为空)。 2、每次从A集合中查找出最大或者最小的元素后放入集合B中 3、同时将该元素从集合A中移除. 4、循环执行以上两步直到集合A为空,B集合中的元素就有序了. 缺点: 效率低,时间复杂度为 O(n*n),是一种... ...
分类:
编程语言 时间:
2016-04-06 13:30:17
阅读次数:
195
直接插入排序(StraightInsertionSort)是一种最简单的排序方法,他的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的,记录数增1的有序表。当前元素的前面元素均为有序,要插入时,从当前元素的左边开始往前找(从后往前找),比当前元素大的元素均往右移..
分类:
编程语言 时间:
2016-04-05 14:17:24
阅读次数:
197
#include<iostream>usingnamespacestd;voidShellSort(int*a,intlength){ if(a==NULL||length<=0) { return; } intgap=length; while(gap!=1) { if(gap>1) { gap=gap/3+1; } for(intbegin=gap;begin<length;begin+=gap) { intindex=begin; inttmp=a[..
分类:
编程语言 时间:
2016-04-05 10:58:20
阅读次数:
151