
算法与数据结构
Wu_Kung
上善若水。水善利万物而不争,处众人所恶,故几於道矣。居善地心善渊,与善仁,言善信,政善治,事善能,动善时。夫惟不争,故无尤。
展开
-
用Java实现不用加减乘除做加法操作
面试题1:不用加减乘除,求两个整数的和。import java.util.Scanner;public class GetSum { /** * 不用加减乘除做加法; * 十进制中的18和7相加;可以分成这样三步来计算:一.无进位的各个位相加得18+7=15;二.18加7的进位是10 * 三.用一和二的结果相加15+10=25 * 对数字运算除了使用四则运算,原创 2014-03-28 10:30:58 · 5635 阅读 · 0 评论 -
快速排序一种易于理解的方式实现
看来网上的一些快速排序的例子,发现好多都是代码比较多且不好理解,所以想自己总结一遍这样的博文来分析快速排序,贴出了java实现的代码,用其他语言实现只要稍作修改就行。s[]={48,89,34,55,11,56,89,96,10};以数组s[]为实例来剖析快速排序代码的原理:数组的初始太:选48做基准数,对数组进行填坑挖数操作X=s[0],i=0,j=8原创 2014-03-26 23:11:02 · 1516 阅读 · 2 评论 -
一.排序算法大全之堆排序
一.排序算法大全之堆排序先从伪代码的角度分析:二叉堆数据结构是一种数组对象,用堆对数组A(数组下标用i表示)进行排序,需要了解这些性质。堆的基本性质:1.堆是一个完全二叉树 2.二叉堆有两种:a.最大堆 A[parent(i)]>=a[i] b.最小堆 A[parent(i)] 3.通过下标i,求父节点,左子节点,右子节点原创 2014-04-17 13:26:29 · 1432 阅读 · 0 评论 -
面试题三:设计包含 min 函数的栈。
3.设计包含 min 函数的栈。定义栈的数据结构,要求添加一个 min 函数,能够得到栈的最小元素。要求函数 min、push 以及 pop 的时间复杂度都是 O(1)。思路分析:a.要想一个在栈中找出栈的最小值,且时间复杂度为1,我们可能回想到每次向栈插入push()一个值都对其进行排序操作,将最小值放在栈顶,但是我们很快会发现这种方式破坏了栈的结构,不再满足栈的先进先出原创 2014-04-17 22:32:46 · 1761 阅读 · 0 评论 -
排序算法大全之基数排序
排序算法大全之——基数排序基数排序是一种分配式排序,又成为桶子法排序LSD(我们以最低位优先)第一步:假设原有一串数字如下: 23,45,12,32,43 遍历这些数的个位数字,将他们分别装进编号为0到9的桶中 桶 0:为空,因为这些数中没有个位数为0的 桶 1:空 桶 2:12,32 桶 3:23,43 桶 4:空原创 2014-05-04 20:08:56 · 1575 阅读 · 0 评论 -
排序算法大全之计数排序
计数排序是一个比较简单的排序算法计数排序基本思想:计数排序首先有一个大的前提,假设n个输入元素中每一个介于0到k之间的整数,此处k为某个整数1.就是对每一个输入元素x,确定小于x元素的个数。例如,如果有17个元素小于x,则将x插入在第18位。2.当有几个相同元素时,这个方案要略做修改,因为不能把它们放在同一个输出位置上。计数排序不是就地排序,也不是比较排序,所以他的时间复杂度可原创 2014-04-18 12:44:55 · 1809 阅读 · 0 评论 -
约瑟夫环:用java解决的一种办法
约瑟夫环的编程解决原理:问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。那七个人做事例分析:定义一个数组:大小为 7 ,初始值都设置为0,a[0]=0,a[1]=0,...,a[6]=0;然后从数组下标为0开始报数,等报到3时将a[i]的值设置为1,报到a[6]时在回到a[0]开始循环,直到大小为n的数原创 2014-03-25 20:59:35 · 1714 阅读 · 3 评论 -
各大IT公司算法和数据结构面试题整理Java实现
1.把二元查找树转变成排序的双向链表题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \4 8 12 16转换成双向链表4=6=8=10=12=14=16。首先我们定义的二元查找树 节点的数据结构如下: struct BS原创 2014-04-06 16:52:13 · 2425 阅读 · 2 评论