随笔分类 - 分治策略
算法导论第四章学习
摘要:参考算法导论9.3节的内容和这位大神的博客:http://blog.csdn.net/v_JULY_v上对这一节内容代码的实现进行了学习 尝试实现了以查找中位数为前提的select算法。 算法功能:可以确定一个数组中第k大的元素。 算法思想描述如下: 1、将输入n个元素划分为(n/5:向下取整)个组
阅读全文
摘要:最近在自学算法导论,看到堆排序这一章,来做一下笔记。堆排序是一种时间复杂度为O(lgn)的原址排序算法。它使用了一种叫做堆的数据结构。堆排序具有空间原址性,即指任何时候都需要常数个额外的元素空间存储临时数据。 堆:二叉堆是一个数组,它可以被看成一个近似的完全二叉树。除了最底层以外,该树是满的;且最底
阅读全文
摘要:问题描述:输入一组数,指定一个k,输出这组数里第k大的数。 一般这种题目,第一想法是把整个数组先排序后,再选取第k位的数。但是这样做实际上浪费了大量的时间在排序上,我们只是要求第k大的数,并非要把整个数组排序完。 利用快速排序算法的性质:每一趟排序,必有一个元素位于最终的位置,而且于此同时这个元素左
阅读全文
摘要:这两天自学了一线算法导论里分治策略的内容,秉着只有真正投入投入编程,才能更好的理解一种算法的思想的想法,兴致勃勃地找一些入门的题来学习。 搜了一下最后把目光锁定在了Poj fractal这一个题上。以前一直对这种题无从下手,通过对这一条题的分析与理解,算是第一次对分治思想有一个较为具象的了解。 分治
阅读全文
摘要:问题描述: Find the contiguous subarray within an array (containing at least one number) which has the largest sum. For example, given the array [−2,1,−3,4
阅读全文
摘要:快速排序 是非常经典的一个算法,可以在对数规模的时间下实现对一组数的排序。 其基于分治的思想,每一趟排序把原组数划分为更小的范围进行排序,并且一定有一个数会在每趟排序下放在最终的位置。 对于一个数组arr[p....r]进行快排: 划分:把数组划分为arr[p...q-1],arr[q],和arr[
阅读全文

浙公网安备 33010602011771号