- 博客(3)
- 收藏
- 关注
原创 堆排序
堆排序是利用堆进行排序的算法。它的基本思想是:第一步:将待排序列构建成一个最大堆,此时堆顶的根节点就是该序列中的最大值第二步:将堆顶元素与堆数组的末尾元素交换,此时末尾元素就是最大值,然后将剩余的n-1个序列重新构建成一个堆 如此反复进行第二步,就得到了一个有序序列。下面是代码 public static void heapSort(int[] arr){ if(a
2017-04-30 14:47:05 224
原创 找出数组中出现一半以上次数的数字
网上有很多关于这题的解析,目前我看到最有的解法就是计数删除法,但代码很抽象,比较难理解,下面我谈谈自己理解,主要是为了加深印象。 public int MoreThanHalfNum_Solution(int [] array) { //先检验输入是否合法,此处默认输入不合法时也输出为0 if(array.length==0||array==null)
2017-04-08 17:40:39 424
转载 P与NP问题的简单解释
要计算或解决一个问题,该问题通常有一个大小规模,用n表示。例如,若分析计算一个二进制数,该数有多少位,这个位就是其大小规模。再比如,从n个数里面找出最大的那个数,这个n就是该问题的规模大小。怎么找?我们要比较n-1次才能得到结果,这个n-1就是所花的时间,也就是时间复杂度。再比如,将n个数按从大至小排序,n是其规模大小,若是我们按这样的方法:第一次从n个数里找最大,第二次从n-1个数里找最大,以此
2016-03-22 14:42:01 787
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人