
排序算法
Findss
大 开眼界
展开
-
快速排序的JAVA实现和性能分析
package Sort;//快速排序是不稳定的排序。//快速排序的时间复杂度为O(nlogn)。//当n较大时使用快排比较好,当序列基本有序时用快排反而不好。public class quicksort { //主函数(就一个sort方法,其他都是输出操作) public static void main(String[] args) { int[] a=原创 2015-05-13 11:50:44 · 424 阅读 · 0 评论 -
KMP算法的JAVA实现
1.寻找最长前缀后缀 如果给定的模式串是:“ABCDABD”,从左至右遍历整个模式串,其各个子串的前缀后缀分别如下表格所示: 也就是说,原字符串对应的各个前缀后缀的公共元素的最大长度表为(下简称《最大长度表》):2.根据《最大长度表》求出next 数组 由上文,我们已经知道,字符串“ABCDABD”各个前缀后缀的最大转载 2015-05-20 11:01:00 · 447 阅读 · 0 评论 -
归并排序的JAVA实现和性能分析
package Sort;//稳定public class mergesort { public static void main(String[] args) { int[] a={49,38,65,97,76,13,27,49,78,34,12,64,1,8}; System.out.println("排序之前:"); for (i原创 2015-05-15 15:57:52 · 462 阅读 · 0 评论 -
线性时间复杂度求数组中第K大的数
算法思想基于快速排序,详细步骤如下:1. 随机选择一个分割点2. 将比分割点大的数,放到数组左边;将比分割点小的数放到数组右边;将分割点放到中间(属于左部分)3. 设左部分的长度为L, 当K 当K > L时,递归地在右部分中找第(K - L)大的数 当K = L时,返转载 2015-05-29 11:50:10 · 1263 阅读 · 0 评论 -
堆排序的JAVA实现和性能分析
package Sort; import java.util.Arrays; public class heapsort { private static int parentIdx(int childIdx) { //返回父节点下标 return (childIdx - 1) / 2; //索引从0开始, 注意childIdx=0时返回0原创 2015-05-18 17:28:26 · 463 阅读 · 0 评论