常用算法
文章平均质量分 77
anjing900812
这个作者很懒,什么都没留下…
展开
-
Leetcode常用的五大算法思想
分治算法一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)…… 任何一个可以用计算机求解的转载 2015-11-18 21:59:57 · 1696 阅读 · 0 评论 -
对java List中的对象进行排序
用Collections.sort方法对list排序,根据Collections.sort重载方法来实现:本题是leetcode56. Merge Intervals原创 2015-12-30 19:23:36 · 627 阅读 · 0 评论 -
比较全面的gdb调试命令
gdb调试的命令转载 2016-03-16 10:13:15 · 534 阅读 · 0 评论 -
堆和堆排序
堆定义:二叉堆,每个节点的值大于等于他的两个子节点;采用的数据结构:数组,二叉堆层次遍历存放在数组中,通过下标找到孩子、父亲结点,2k、2k+1、k/2,保证对数级别的时间复杂度实现插入(新插入的元素放在数组尾部,逐渐上升,调整维护堆的性质)和删除最大元素(删除堆顶,调整);关键操作:Be:数组中从1开始存储元素;由下至上的堆的有序化:节点比其父节点的值大,需要交换public原创 2016-08-03 17:00:54 · 289 阅读 · 0 评论 -
对只包含0、1、2三种元素的数组进行排序
时间复杂度:o(n)两种方法,都是只遍历一次;/*借鉴《算法》中,当数组中存在大量重复元素时,对快排partition方法的改进。 *即三个指针,把数组划分成三部分,x*/public void sortarray2(int[] nums){ int a = 0;//指向下一个存放0的位置 int b = nums.length-1;//从右向左,下一个存放2的位置 int i原创 2016-08-27 13:44:29 · 2613 阅读 · 0 评论 -
常用排序算法总结
选择排序基本思想:遍历数组,找到最小的元素和第一个元素(nums[0])交换。次小的和第二个元素交换,也就是每次找到未排序部分中的最小值放在适当的位置。复杂度分析:长度为N的数组,比较次数:N^2/2 交换次数:N 时间复杂度:N^2特点:运行时间和输入无关,每次都需遍历未排序部分找到最小值;数据的移动交换次数是最少的;代码:public void select_sort(int[原创 2016-08-02 17:18:07 · 341 阅读 · 0 评论