算法
文章平均质量分 64
mmoojing
这个作者很懒,什么都没留下…
展开
-
[开心IT面试题] 字符串系列
1、输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串"345",则输出整数345。答案:http://blog.csdn.net/mmoojing/article/details/17151921原创 2013-12-08 13:01:53 · 251 阅读 · 0 评论 -
[开心IT面试题] 排序系列
6、堆排序答案:http://blog.csdn.net/mmoojing/article/details/177167255、直接选择排序答案:http://blog.csdn.net/mmoojing/article/details/177163754、快速排序答案:http://blog.csdn.net/mmoojing/article/details/原创 2013-12-29 20:36:20 · 242 阅读 · 0 评论 -
[开心IT面试题] 快速排序
1、基本思想首先任意选择一个数据做为划分数组的参照数,将所有比参照数小的数移到它前面,将所有比参照数大的数移到它后面。然后再分别对参照数两边继续进行排序,以达到整个序列有效。1)以第一个数组元素作为参照数、以left、right分别做为数组第一个数和最后一个数的标记。2)从right位置开始向前找,找到第一个小于参照数的数,然后将此数赋给left位置。3)从left位置开始向后找,原创 2013-12-30 23:12:23 · 701 阅读 · 0 评论 -
[开心IT面试题] 直接选择排序
1、基本思想 将数组划分为有序区和无序区,寻找无序区中的最小值和无序区的首元素交换,有序区扩大一个,循环至无序区全部交换完时,则排序完毕。2、直接选择排序属于不稳定的排序。时间复杂度都是O(n^2),空间复杂度O(1)。3、代码将elem[]数组按递增进行直接选择排序void SelectSort(int elem[], int elemLen)原创 2013-12-31 20:16:43 · 641 阅读 · 0 评论 -
[开心IT面试题] 冒泡排序
1、基本思想将数组划分为有序区和无序区,不断通过交换将较大元素移至无序区尾。若在某一趟排序中未发生交换事件时,或无序区已全部排序完时,则排序完毕。2、最优情况:(待排序数组是正序)只用比较一次就行了。复杂度O(n)。最差情况:(待排序数组是逆序)要比较n^2次才行,复杂度O(n^2)。3、冒泡排序属于稳定的排序。最坏时间复杂度O(n^2),最好时间复杂度O(原创 2013-12-29 23:03:36 · 755 阅读 · 0 评论 -
[开心IT面试题] 直接插入排序
1、基本思想将数组分为无序区和有序区,依次将无序区的元素按大小顺序插入到有序区中的适当位置,直到把无序区中元素全部移到有序区时排序完毕。第一趟比较前两个数,然后把第二个数按大小插入到有序区中;第二趟把第三个数与前两个数从后向前扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。2、最优情况:(待排序数组已是有序数组)将无序原创 2013-12-29 15:27:13 · 612 阅读 · 0 评论 -
[开心IT面试题] 栈的顺序栈、链栈实现
C++面试题中很大一个板块——数据结构,主要包括线性表、栈、队列、字符串、二叉树等等,今天我们说说栈。一、概念 栈是限定性线性表,限制在表的一端进行插入和删除的线性表。允许插入、删除的一端称为栈顶,栈顶的当前位置是动态变化的,只能在栈顶对栈进行操作;不允许插入、删除的另一端称之为栈底,栈底是固定不变的,当表中没有元素时称为空栈。栈的存储方式有两种:顺序存储结构和链式存储结构。原创 2013-12-14 16:06:33 · 837 阅读 · 0 评论 -
[开心IT面试题] 队列的顺序表、链表实现
C++面试题中很大一个板块——数据结构,主要包括线性表、栈、队列、字符串、二叉树等等,今天我们说说队列。一、概念 队列是限定性线性表,只允许在表的一端插入元素,而在另一端删除元素的线性表。允许删除一端称为队头,允许插入一端称为队尾;队列的特性是先进先出。队列的存储方式有两种:顺序存储结构和链式存储结构。二、顺序存储结构 用一组连续的存储单元依次存放自队头原创 2013-12-22 16:14:16 · 709 阅读 · 0 评论 -
[开心IT面试题] 栈和队列系列
1、栈的基本操作答案:http://blog.csdn.net/mmoojing/article/details/17315955原创 2013-12-14 17:38:18 · 294 阅读 · 0 评论 -
[开心IT面试题] 堆排序
1、基本思想将数组划分成无序区和有序区,利用大根堆或小根堆思想。1)首先将无序区elem[0,n-1]建立大根堆,然后将堆首elem[0]与堆尾elem[n-1]交换,堆尾之后为有序区。2)将新的无序区elem[0,n-2]调整为大根堆,然后将堆首elem[0]与堆尾elem[n-2]交换,堆尾进入有序区。3)将新的无序区elem[0.n-3]调整为大根堆……重复操作,直到无序区只原创 2013-12-31 21:39:07 · 727 阅读 · 0 评论 -
[开心IT字符串] 反转字符串
题目: 用C语言实现反转字符串strrev()函数。 思想: 循环,依次将第一个字符和最后一个字符交换,第二个字符和倒数第二个字符交换…(终止符“\0”不动) 面试提问字符串的操作,主要是考察几点:一对指针和字符串的理解,二是是否进行合法性检查,三是返回值是否是恰当。 代码:char *ReverseString(char *string){原创 2014-01-16 18:09:07 · 774 阅读 · 0 评论 -
[开心IT面试题] 求字符串长度
题目: 用C语言实现求字符串长度strlen()函数。 思路: 遍历一遍字符串里所有字符,当遇到“\0"字符串终止符时退出。 代码:int StringLength(char *string){ int stringLen = 0; if(string != NULL) { while(*string++ != '\0'原创 2014-01-16 17:50:53 · 815 阅读 · 0 评论 -
[开心IT面试题] 包含min函数的栈
题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。思路:在栈结构体中添加一个min最小值的变量,可以随时读取。 1.存储结构typedef int SElemType; //变量类型typedef struct LinkStackNode{ SElemT原创 2014-06-15 16:21:15 · 414 阅读 · 0 评论 -
springmvc要怎么设置才会返回JSON数据 默认情况下springmvc返回的是啥形式的数据啊
重排序通常是编译器或运行时环境为了优化程序性能而采取的对指令进行重新排序执行的一种手段。重排序分为两类:编译期重排序和运行期重排序,分别对应编译时和运行时环境。 在并发程序中,程序员会特别关注不同进程或线程之间的数据同步,特别是多个线程同时修改同一变量时,必须采取可靠的同步或其它措施保障数据被正确地修改,这里的一条重要原则是:不要假设指令执行的顺序,你无法预知不同线程之间的指令会以何种顺序执htt原创 2015-01-02 13:16:31 · 303 阅读 · 0 评论 -
[开心IT面试题] 链表系列
8、n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m个数字。求出在这个圆圈中剩下的最后一个数字。答案:http://blog.csdn.net/mmoojing/article/details/171924457、给定两个非环原创 2013-12-08 13:02:18 · 235 阅读 · 0 评论 -
[开心IT面试题] 希尔排序
1、基本思想希尔排序又称增量缩小排序,是对直接插入排序的一种改进,分组插入方法。先将序列按增量划分为元素个数相同的若干组,使用直接插入排序法进行排序,然后不断缩小增量直至为1,最后使用直接插入排序完成排序。 2、假设待排序数组为[2 6 1 5 3 8 9 4],增量取4、2和1第一趟待排序数组可分成以下四个虚拟组:2和3一组;6和8二组;1和8三组;5和4四组并不是原创 2013-12-29 20:31:16 · 720 阅读 · 0 评论 -
[开心IT面试题] 数组系列
1、输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。答案:http://blog.csdn.net/mmoojing/article/details/17149283原创 2013-12-08 13:00:31 · 223 阅读 · 0 评论 -
[开心IT面试题] n个数字形成一个圆圈,删除第m个数字,剩下最后一个数字是?
题目:n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m个数字。求出在这个圆圈中剩下的最后一个数字。 思路:将n个数字(0,1,…,n-1)形成一个圆圈创建成一个循环链表,一直循环遍历链表,删除第m个数字,直至剩下一个结点时原创 2013-12-07 21:06:36 · 777 阅读 · 0 评论 -
[开心IT面试题] 检测两个非环链表是否有交点
题目:给定两个单链表(first, second),检测两个链表是否有交点,如果有返回第一个交点。思路:如果first==second,那么显然相交,直接返回first。否则,分别从first,second开始遍历两个链表获得其长度len1与len2。假设len1>len2,那么指针p1由first开始向后移动len1-len2步。指针p2=second,下面p1、p2每次向后前进原创 2013-11-28 11:18:49 · 934 阅读 · 1 评论 -
[开心IT面试题] 找出单链表的倒数第k个元素
题目:找出单链表的倒数第k个元素思路:建立两个单链表。让第一个先走k步后,第二个开始走。这样当第一个走完时,第二个单链表剩下K个元素。代码:Node *GetLastElem(Node *node, int k){ Node *first, *second; first = node; second = node; int len; //计算单链表长度 len = Length_LinkList(node); //让第一个单链表先走k步原创 2013-11-23 21:49:12 · 814 阅读 · 0 评论 -
[开心IT面试题] 在有序数组中查找和正好是给定值的两个数字
题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。 思路:因为数组是按升序排序过的,所有后面的值一定比前面的值大。设两个变量elem1和elem2,e原创 2013-12-05 21:58:45 · 754 阅读 · 0 评论 -
[开心IT面试题] 两个有序链表的合并
题目:有两个有序链表,各自内部是有序的,但是两个链表之间是无序的思路:假设两个有序链表分别为first和second。建立两个单链表p1, p2。分别从链表头开始遍历,让第一个每次走两步,第二个每次走一步。如果第一个能走到链尾,说明无环。如果链表中有环,这两个链表必然会在某个时刻相遇。代码:bool DetermineCycle(Node *node){ if(node-原创 2013-11-27 13:59:17 · 654 阅读 · 0 评论 -
[开心IT面试题] 给定单链表,检测是否有环
题目:给定单链表,检测是否有环 思路:建立两个单链表。从链表头开始遍历,让第一个每次走两步,第二个每次走一步。如果第一个能走到链尾,说明无环。如果链表中有环,这两个链表必然会在某个时刻相遇。 代码:bool DetermineCycle(Node *node){ if(node->next == NULL || node->next->next == NULL)原创 2013-11-25 17:38:08 · 805 阅读 · 0 评论 -
[开心IT面试题] 找出单链表的中间元素
题目:找出单链表的中间元素 思路:建立两个单链表。让第一个每次走两步,第二个每次走一步,当第一个走完时,第二个刚好走到中间。 代码:Node *FindMiddle(Node *node){ Node *first, *second; first = node; second = node; while(first->next != NULL原创 2013-11-23 22:09:28 · 1120 阅读 · 0 评论 -
[开心IT面试题] 单链表基础
C++面试题中很大一个板块——数据结构,主要包括线性表、栈、队列、字符串、二叉树等等,今天我们先来说说单链表。 一、概念 单链表(singly linked list)是一种最简单的链表表示,也叫做线性链表。单链表的一个存储结点(node)包含两个部分data和link。data部分称为数据域,用于存储线性表的一个数据元素。link部分称为指针域或链域,用于存放一个指针,该原创 2013-11-19 23:31:47 · 753 阅读 · 0 评论 -
[开心IT面试题] 爬楼梯问题豪华版
题目:如果每次可以往上爬1个或2个或3个台阶,爬楼梯过程中允许最多往下走k次,每次走1个台阶,从第0个台阶开始,爬到第n个台阶有多少种方案?举例:当n = 2,k = 2时,有12种方案方案1:走1,走1方案2:走1,走1,退1,走1方案3:走1,走1,退1,走1,退1,走1方案4:走2方案5:走2,退1,走1方案6:走2,退原创 2013-11-16 18:15:27 · 777 阅读 · 0 评论 -
[开心IT面试题] 爬楼梯问题升级版
题目:如果每次可以往上爬1个或2个或3个台阶,不能往下走,从第0个台阶开始,爬到第n个台阶有多少种方案?举例:当n = 1时,有1种方案。当n = 2时,有2种方案当n = 3时,有4种方案。方案一:每次爬1个台阶,爬三次方案二:第一次爬1个台阶,第二次爬2个台阶方案三:第一次爬2个台阶,第二次爬1个台阶方案四:爬一次,一次3原创 2013-11-15 14:08:38 · 880 阅读 · 0 评论 -
[开心IT面试题] C实现大整数四则运算
由于经常要处理一些大数据的运算,用整型不够,所以用c语言实现了大整数四则运算。废话就不多说,直接贴代码,代码中有注释。 #define BIT_TOTAL 500typedef struct{ char BigInt[BIT_TOTAL]; bool isNegative;}BIGINT;void Reverse(char nData[]){ ch原创 2013-11-14 22:39:36 · 811 阅读 · 0 评论 -
[开心IT面试题] 爬楼梯问题
题目:1、如果每次可以往上爬1个或2个或3个台阶,从第0个台阶开始,爬到第n个台阶有多少种方案?2、如果每次可以往上爬1个或2个或3个台阶,爬楼梯过程中允许最多往下走一次,每次走1个台阶,从第0个台阶开始,爬到第n个台阶有多少种方案?3、如果每次可以往上爬1个或2个或3个台阶,爬楼梯过程中允许最多往下走k次,每次走1个台阶,从第0个台阶开始,爬到第n个台阶有多少种方案?原创 2013-11-08 14:28:40 · 1039 阅读 · 1 评论 -
[开心IT面试题] 单链表排序、反转
一、单链表排序 仿照基于数组的冒泡排序算法Node* Sorting_LinkList(Node* node){ if(node == NULL || node->next == NULL) { return node; } Node* result; int temp = 0; int len = Lengt原创 2013-11-20 11:37:48 · 688 阅读 · 0 评论 -
用ECLipse连接Oracle数据库时出现java.lang.该怎么解决啊
我们开发过程中特别是用户注册时会有一个效果,就是文本框获取焦点清空提示,如果用户没有输入信息失去焦点赋值上我们的提示语 $(function(){ $(http://book.zongheng.com/chapter/202049/4722403.htmlhttp://book.zongheng.com/chapter/202049/7308795.htmlhttp://book.zong原创 2015-01-02 13:31:15 · 221 阅读 · 0 评论