随笔分类 -  排序算法

摘要:思想:http://www.cnblogs.com/jillzhang/archive/2007/09/16/894936.htmlJava代码:http://blog.csdn.net/middlekingt/article/details/8446552先收藏这个,后面自己写 阅读全文
posted @ 2015-04-27 22:30 kpp 阅读(125) 评论(0) 推荐(0)
摘要:当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短; 1.插入排序—直接插入排序(Straight Insertion Sort)基本思想:将一个记录... 阅读全文
posted @ 2015-04-01 17:41 kpp 阅读(635) 评论(0) 推荐(0)
摘要:package kpp.sort;/** * 快速排序 * 一般选取首元素为枢轴元素,保存至pivot,确定头尾指针left,right, * 先对整个数组元素进行排序,此时枢轴元素两侧元素有序,再分别对枢轴元素两侧的两个数组执行排序 * 排序规则 * 1.right指针从右向左遍历,如果比当前枢轴... 阅读全文
posted @ 2015-03-30 20:39 kpp 阅读(214) 评论(0) 推荐(0)
摘要:package kpp.sort;/** * 堆的定义如下: n个元素的序列{k0,k1,...,ki,…,k(n-1)}当且仅当满足下关系时,称之为堆。 " ki=k2i,ki>=k2i+1.(i=1,2,…,[n/2])" 若将和此次序列对应的一维数组(即以一维数组作此序列的存储结构)看成... 阅读全文
posted @ 2015-03-27 22:05 kpp 阅读(186) 评论(0) 推荐(0)
摘要:package kpp.sort;/** * 希尔排序 * 1.设定步长d,每隔d个元素分为一组,组内插入排序; * 2.d/=2,重复1步骤,直到步长为1 * * 们知道一次插入排序是稳定的,但在不同的插入排序过程中,相同的元素可能在各自的插入排序中移动,最后其稳定性就会被打乱,所以希尔排序是不... 阅读全文
posted @ 2015-03-27 22:03 kpp 阅读(168) 评论(0) 推荐(0)
摘要:package kpp.sort;/** * 选择排序 * 从第0个元素开始,每次选择最小的元素,与当前元素交换 * 简单选择排序是不稳定的排序。 时间复杂度:T(n)=O(n^2)。 * @author kpp * */public class SelectSort { public s... 阅读全文
posted @ 2015-03-27 22:02 kpp 阅读(132) 评论(0) 推荐(0)
摘要:package kpp.sort;/** * 当前待插入元素data[i],若data[i]>=data[i-1],则表示排序正常,i++处理下一个元素 * 若data[i]= left;j--){ a[j+1]=a[j]; } ... 阅读全文
posted @ 2015-03-27 22:01 kpp 阅读(687) 评论(0) 推荐(0)
摘要:package kpp.sort;/** * 当前待插入元素data[i],若data[i]>=data[i-1],则表示排序正常,i++处理下一个元素 * 若data[i]=0&&temp = j+1;k--){ a[k+1]=a[k]; ... 阅读全文
posted @ 2015-03-27 21:55 kpp 阅读(186) 评论(0) 推荐(0)