
Algorithm
AlphaGQ
握不住的沙,何不随手扬了它
展开
-
排序算法总结(二)
归并排序算法思想是分而治之。下面将对分而治之算法排序做一个简单描述。//归并排序之分而治之 void sort(E, n) { //对E中的n个元素排序 if(n >= k) { i = n / k; j = n - I; 令A由E的前i个元素组成; 令B由E的后j个元素组成; sort(A, i);原创 2017-04-16 21:52:26 · 374 阅读 · 0 评论 -
排序算法总结(三)
堆排序1.堆 堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: Key[i]=Key[2i+1]&&key>=key[2i+2],满足Key[i]>=Key[2i+1]&&key>=key[2i+2]称为大顶堆,满足 Key[i]2.堆排序的思想 利用大顶堆(小顶堆)堆顶记录的是最大关键字(最小关键字)这一特性,使得每次从无序中选择最大记录(最小记录)变得简单,堆排原创 2017-04-20 21:40:56 · 415 阅读 · 0 评论 -
卡特兰数的详解
转载地址:http://blog.youkuaiyun.com/hackbuteer1/article/details/7450250Catalan数——卡特兰数 今天阿里淘宝笔试中碰到两道组合数学题,感觉非常亲切,但是笔试中失踪推导不出来后来查了下,原来是Catalan数。悲剧啊,现在整理一下一、Catalan数的定义令h(1)=1,Catalan数满足递归式:h(n) = h(1)*h转载 2017-05-18 21:54:12 · 1152 阅读 · 0 评论 -
排序算法的总结(一)
排序算法的总结:冒泡排序,选择排序,快速排序,插入排序,归并排序,堆排序,基数排序,桶排序1、冒泡排序冒泡排序是最简单的排序之一了,其大体思想就是通过与相邻元素的比较和交换来把小的数交换到最前面,或者通过与相邻元素的比较和交换来把大的数交换到最最后面。冒泡排序的时间复杂度为O(n^2)。//冒泡排序templatevoid bubbleSort(T a[], int n){原创 2017-04-15 19:51:02 · 436 阅读 · 0 评论 -
求整数二进制表示中的1的个数
题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。分析:这是一道很基本的考查位运算的面试题。包括微软在内的很多公司都曾采用过这道题。一个很基本的想法是,我们先判断整数的最右边一位是不是1。接着把整数右移一位,原来处于右边第二位的数字现在被移到第一位了,再判断是不是1。这样每次移动一位,直到这个整数变成0为止。现在的转载 2017-08-25 20:54:38 · 864 阅读 · 0 评论