![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试编程
文章平均质量分 54
Yaaa_mayday
这个作者很懒,什么都没留下…
展开
-
C/C++实现快速排序和随机快速排序
快速排序采用分治的思想进行排序,算法直接对数组对a[p,p+1,p+2,p+3.....r](符号代表的是数组a:a[p],a[p+1],a[p+2].....a[r])进行操作,主要分为三步:分解:将a[p,p+1,p+2,p+3.....q]在一次排序后以a[q]为定界,a[p,p+1,p+2,p+3....q-1]全小于a[q],a[q+1,q+2,q+3...r]全大于a[q],但a[原创 2016-05-23 22:08:05 · 3089 阅读 · 1 评论 -
C/C++实现多个数的拼接(组合)成最大数字
面试的时候经常有一道题就是给你多个数,让你拼接或者组合成一个最大的数字,如687,68,239,9,689,拼接后最大的数字应该为968968768239,题目一看很容易使人想到用贪心算法,对齐后每次选取当前最大数,但考虑到数字位数不一,需要加很复杂的控制,导致代码根本写不出,其实只要跳出这个局限算法就很容易实现了 让我们看一个最简单的例子,数组a存有1,2,3,4拼接成最大的数是4321,算原创 2016-05-19 23:42:46 · 12853 阅读 · 1 评论 -
负数补码为正数取反+1的图形化解释
在CSAPP中关于补码有以下论述:一个数的取反相加将使这个数从左边1开始的到最右边的所有位全变为1,如对w=4,中5的二进制补码除去符号位外,对0101取反相加后为0111,如果再加1则变为1000(推导1 )-5的补码表示为1011,结合公式2-3可以知道其可以看做是 -1*2^3+0*2^2+1*2^1+1*2^1= -8+(2+1)=-5,而-5=(8-5)原创 2017-06-02 10:29:18 · 973 阅读 · 0 评论