- 博客(72)
- 资源 (4)
- 收藏
- 关注
转载 PAIXU
二、二分插入排序1)算法简介 二分(折半)插入(Binary insert sort)排序是一种在直接插入排序算法上进行小改动的排序算法。其与直接排序算法最大的区别在于查找插入位置时使用的是二分查找的方式,在速度上有一定提升。2)算法描述和分析 一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下: 1、从第一个元素开始,该元素
2014-07-29 11:51:22 1449
转载 SQL行列互换
面试的时候遇到的数据库SQL问题,没写过,然后研究了一下,现将结果记录下来,方便以后查询。 题目1:将表tbltest1的行列互换 表结构:student kemu fenshustudent1 语文 80 student1 数学 90 student1 英语 85 student2 语文 85 st
2014-07-29 11:18:16 1146
原创 对一个字符数组进行全排列
#include #include void swapArrayElements(char a[], int lhs, int rhs){ char temp; temp = a[lhs]; a[lhs] = a[rhs]; a[rhs] = temp;}void perm(char a[], int start, int end
2014-07-29 11:13:34 1362
原创 用递归和非递归两种方法翻转一个链表
用递归和非递归两种方法翻转一个链表先定义一下链表:[cpp] view plaincopyprint?typedef struct node { ElemType data; struct node * next; }ListNode; typedef struct { ListNode *head; int size; ListNode *t
2014-07-29 09:57:01 1040
转载 猴子分桃
1、五只猴子分桃。半夜,第一只猴子先起来,它把桃分成了相等的五堆,多出一只。于是,它吃掉了一个,拿走了一堆; 第二只猴子起来一看,只有四堆桃。于是把四堆合在一起,分成相等的五堆,又多出一个。于是,它也吃掉了一个,拿走了一堆;.....其他几只猴子也都是 这样分的。问:这堆桃至少有多少个?(朋友说,这是小学奥数题)。 参考答案:先给这堆桃子加上4个,设此时共有X个桃子,最后剩下a个桃子.这样:
2014-07-29 00:18:39 1447 1
原创 vector hash arraylist list
1、如果线程要求安全,使用Vector,Hashtable2、如果不要求线程安全,应使用ArrayList,LinkedList,HashMap3、如果要求键值对,则使用HashMap、Hashtable4、如果数据很大,又要线程安全考虑Vector访问效率最高的是ArrayList,HashTable次之 如果你会进行大量的插入/删除操作,而不是对容器中的元素进行简单的访
2014-07-29 00:07:26 911
原创 广搜和深搜
一般来说,广搜常用于找单一的最短路线,或者是规模小的路径搜索,它的特点是"搜到就是最优解", 而深搜用于找多个解或者是"步数已知(好比3步就必需达到前提)"的标题,它的空间效率高,然则找到的不必定是最优解,必需记实并完成全数搜索,故一般情况下,深搜需要很是高效的剪枝(优化).像搜索最短路径这些的很显著若是用广搜,因为广搜的特征就是一层一层往下搜的,保证当前搜到的都是最优解,当然,最短路径只
2014-07-28 22:22:37 1529
转载 链表19个问题
最近在复习数据结构,想把数据结构里面涉及的都自己实现一下,完全是用C语言实现的。自己编写的不是很好,大家可以参考,有错误希望帮忙指正,现在正处于编写阶段,一共将要实现19个功能。到目前我只写了一半,先传上来,大家有兴趣的可以帮忙指正,谢谢 每天都会把我写的新代码添加到这个里面。直到此链表完成。?#include "stdafx.h"#includ
2014-07-28 18:17:09 809
原创 u3d要求
项目为手游,RPG类型工作职责:1.使用Unity3D进行游戏客户端核心模块开发,包括IOS和Android平台;2.撰写Unity3D技术研究文档、功能开发说明文档;3.熟悉OPENGL,并有相关开发经验,参加过Untiy3D项目完整开发。4.熟练运用unity3D中的JS或C#语言撰写客户端代码,熟练运用unity3D中内置插件。5.可自行编写游戏所需的一些效果(sha
2014-07-28 16:11:24 1599
原创 查找最小的k个元素(数组)
题目:输入n个整数,输出其中最小的k个。 例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。1 在数据量不大的情况下,排序2 维护一个最小k 的数组 ,复杂度 为 o(k * N) 3 为一个最小K个数的最大堆 o(log2 k * N)/*查找最小的k 个元素题目:输入n 个整数,输出其中最小的k 个。例如输入1,2,3,4,5,6,7
2014-07-27 23:43:13 1281
原创 冒泡排序
sharp] view plaincopyprint?class BubbleSortAlgorithm { public void BubbleSort(int[] array) { bool exchanged = false; // to check whether the array is sorted.
2014-07-27 21:23:55 881
原创 动态规划【搬运距离】
算法stringclass2010c 一个骆驮运玉米从A地到B地, 骆驮一次最多运1000个玉米,A地距离B地有1000米远. 而骆驮每走1米就要吃一个玉米.现在有3000个玉米.现在要从A运到B. 问到B地最多还能剩下多少个玉米?wantalcs给出的答案是: [c-sharp] view plaincopyprint?class Program
2014-07-27 21:00:57 1176
转载 A*寻路算法
你是否在做一款游戏的时候想创造一些怪兽或者游戏主角,让它们移动到特定的位置,避开墙壁和障碍物呢?如果是的话,请看这篇教程,我们会展示如何使用A星寻路算法来实现它!在网上已经有很多篇关于A星寻路算法的文章,但是大部分都是提供给已经了解基本原理的高级开发者的。本篇教程将从最基本的原理讲起。我们会一步步讲解A星寻路算法,幷配有很多图解和例子。不管你使用的是什么编程语言或者
2014-07-27 19:45:29 1548
转载 2个有序数组 第K小
前言:这道题是一道非常常见的面试题,也是一道能够考察一个人的编程能力和算法的一道题。如果要求复杂度为 O(k), 是比较容易做出来的,但是,一般来讲,面试官要求给出更低复杂度的算法。网上有很多不同的解法,但是,总的来讲,那些程序考虑的因素太多,比较难懂,而且结构很乱。在这里写出自己的方法。本文的算法复杂度为 O(lg K)。 PS. 如果你没有见过这个题目,并且能够在30分钟内写出没有bu
2014-07-27 19:36:50 753
原创 删除连续的2个0
[cpp] view plaincopychar* removeSuccessTwoZero(char *Array) { char *pCur; char *pCopy; int iZeroNum = 0; pCur = pCopy = Array; while(*pCur != '\0')
2014-07-27 19:00:28 762
转载 String与StringBuilder的区别
String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常
2014-07-27 13:29:07 757
原创 三次握手
TCP协议三次握手过程分析TCP(Transmission Control Protocol) 传输控制协议TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(rese
2014-07-23 13:00:14 751
转载 渲染流水管线
图形渲染管线的各个阶段到底做了些什么,总是不甚清楚,每次翻书查阅,但是过了一阵遇到还是翻书,这次看Cg教程里写的不错,特地摘下来,以备查阅。 -by shenzi/2010.3.25 3D图形渲染管线 什么是渲染(Rendering) 渲染简单的理解可能可以是这样:就是将三维物体或三维场景的描述转化为一幅二维图像,生成的二维图像能很好的反应三维物体或三维场景(如图1):
2014-07-22 01:19:34 1602
原创 翻转链表
最近试着做一些笔试面试题,既是为来年找工作做准备,也可以做为数据结构和算法的复习笔记,就陆续发在这里吧,有需要的朋友可以看一下,如果有没考虑周全的地方欢迎指正。 先来一个最常见的题目:反转单链表。假设单链表的数据结构定义如下: ?typedefstruct LNode{ int data; structL
2014-07-22 00:44:32 708
原创 找到链表的倒数第m个节点
方法1:首先遍历链表,统计链表的长度N。然后再次遍历链表,找到第N-m个节点,即为倒数第m个节点。 方法2:使用两个指针,并使它们指向的节点相距m-1个。然后同时向前移动两个指针,当一个指针指最后一个节点时,第二个指针指向倒数第m个节点。 两个方法的复杂度都是O(n)。但是当N较大而m较小时,方法2可能会更快一些。因为方法2能更好利用CPU的缓存。
2014-07-22 00:05:07 1096
原创 给定一个排序数组,如何构造一个二叉排序树?
给定一个排序数组,如何构造一个二叉排序树?采用递归算法。选取数组中间的一个元素作为根节点,左边的元素构造左子树,右边的节点构造有子树。
2014-07-21 23:58:54 7107
原创 数组中是否有两个数的和为10 一道小题做四方
数组中是否有两个数的和为101.比较任意两个数的和是否为10。如for (int i = 0; i 复杂度为O(n*n)。 2.将数组排序后,对每个数m,使用二分查找在数组中寻找10-m。复杂度为O(nlogn)。 3.将数组存储到hash_set中去,对每个数m,在hash_set中寻找10-m。复杂度为O(n)。 4.如果数组很大,超
2014-07-21 23:57:17 961
原创 字符串逆序
void revert(char* str) {` char c;` for (int front = 0, int back = strlen(str) - 1;` front ` ++front, --back) {` c = str[back];` str[back] = str[front];`
2014-07-21 23:36:01 759
原创 线程和进程区别和联系。什么是“线程安全”?
线程和进程区别和联系。什么是“线程安全”? (1)如果说,在操作系统中引入进程的目的,是为了使多个程序能并发执行,以提高资源利用率和系统吞吐量。那么,在操作系统中再引入线程,则是为了减少程序在并发执行时所付出的空间开销,使OS具有更好的并发性。进程是作为拥有系统资源的基本单位,同时也是一个可独立调度和分派的基本单位(线程也是)。通常进程包含多个线程并为它们提供资源(2)线程安全
2014-07-21 20:23:18 1208
原创 Linux下进程通信的八种方法
Linux下进程通信的八种方法Linux下进程通信的八种方法:管道(pipe),命名管道(FIFO),内存映射(mapped memeory),消息队列(message queue),共享内存(shared memory),信号量(semaphore),信号(signal),套接字(Socket) (1) 管道(pipe):管道允许一个进程和另一个与它有共同祖先的进程之间
2014-07-21 20:18:51 893
原创 atoi
int my_atoi(char* pstr) { int Ret_Integer = 0; int Integer_sign = 1; if(pstr == NULL) //判断指针是否为空 { printf("Pointer is NULL\n"); return
2014-07-21 20:03:59 725 1
原创 二进制中1的个数
二进制中1的个数统计二进制中1的个数可以直接移位再判断,当然像《编程之美》书中用循环移位计数或先打一个表再计算都可以。本文详细讲解一种高效的方法。以34520为例,可以通过下面四步来计算其二进制中1的个数二进制中1的个数。第一步:每2位为一组,组内高低位相加 10 00 01 10 11 01 10 00 -->01 00 01 01 10 01 01 00
2014-07-20 21:46:43 690
原创 将整形转化为字符串
/*将整形转化为字符串*/#include #include void main(){void IntegerToString(char s[],int n);char str[10];int i=357;IntegerToString(str,i);printf("%s\n",str);}void reverse(char s[])
2014-07-19 20:32:24 2322
原创 虚函数
9、下列关于虚函数的说法正确的是()A、在构造函数中调用类自己的虚函数,虚函数的动态绑定机制还会生效。B、在析构函数中调用类自己的虚函数,虚函数的动态绑定机制还会生效。C、静态函数不可以是虚函数因为静态成员函数没有this,也就没有存放vptr的地方,同时其函数的指针存放也不同于一般的成员函数,其无法成为一个对象的虚函数的指针以实现由此带来的动态机制。静态是编译时期就必须确定的,虚
2014-07-19 10:56:45 1206
原创 strcpy和memcpy的区别
strcpy和memcpy的区别strcpy和memcpy都是标准C库函数,它们有下面的特点。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);memcpy提供了一般内存的复制。即memcpy对于需
2014-07-19 10:21:37 695
原创 输入一个表示整数的字符串,把该字符串转换成整数并输出。
题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串"345",则输出整数345。 思路一:1.每扫描到一个字符,我们把在之前计算得到的值乘以10再加上当前字符表示的数字值,这个思路用循环不难实现。2.由于整数字符串中可能不仅仅含有数字,还有可能以'+'或者'-'开头,表示整数的正负,如果第一个字符是'+'号,则不需要做任何操作;如果第一个字符是'-'
2014-07-19 02:58:19 4026
原创 输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来。实际上就是一个背包问题
100题之21题:编程求解,输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来。实际上就是一个背包问题。求解思路:1.首先判断,如果n>m,则n中大于m的数不可能参与组合,此时置n = m;2.将最大数n加入且n == m,则满足条件,输出;3.将n分两种情况求解,(1)n没有加入,取n = n - 1; m = m;递归下去;(2
2014-07-19 02:47:30 5110 4
原创 字符串的左旋转操
题目:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef 左旋转2 位得到字符串cdefab。请实现字符串左旋转的函数,要求时间对长度为n 的字符串操作的复杂度为O(n),辅助内存为O(1)。 思路一:分析:如果不考虑时间和空间复杂度的限制,最简单的方法莫过于把这道题看成是把字符串分成前后两部分,通过旋转操作把这两个部分交换位置。于是我
2014-07-19 02:27:04 702
原创 一个台阶总共有n 级,如果一次可以跳1 级,也可以跳2 级,求总共有多少总跳法,并分析算法的时间复杂度。
题目:一个台阶总共有n 级,如果一次可以跳1 级,也可以跳2 级,求总共有多少总跳法,并分析算法的时间复杂度。注:这道题最近经常出现,包括MicroStrategy 等比较重视算法的公司都曾先后选用过个这道题作为面试题或者笔试题。 思路一:首先我们考虑最简单的情况:如果只有1 级台阶,那显然只有一种跳法,如果有2 级台阶,那就有两种跳的方法了:一种是分两次跳,每次跳1 级;
2014-07-19 02:12:10 4826
转载 输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。利用位运算~第二种思路很赞....?#includeusingnamespace std;int count_one_1(int num){ intcnt=0; //uns
2014-07-19 01:59:10 2992
原创 输入一个整数n,求从1 到n 这n 个整数的十进制表示中1 出现的次数。
题目:输入一个整数n,求从1 到n 这n 个整数的十进制表示中1 出现的次数。例如输入12,从1 到12 这些整数中包含1 的数字有1,10,11 和12,1 一共出现了5 次。注:这是一道广为流传的google 面试题。 思路一:我们每次判断整数的个位数字是不是1。如果这个数字大于10,除以10 之后再判断个位数字是不是1。(对每一个数x,x先与10取余,然后判断x/10
2014-07-19 01:45:07 3524
原创 请修改append函数,利用这个函数实现
.请修改append函数,利用这个函数实现(链表):两个非降序链表的并集,1->2->3 和 2->3->5 并为 1->2->3->5另外只能输出结果,不能修改两个链表的数据。//coder:LEE//20120307#include#includeusing namespace std;struct List{int data;Lis
2014-07-19 01:18:49 1688
原创 求一个二叉树中任意两个节点间的最大距离,两个节点的距离的定义是这两个节点间边的个数,比如某个孩子节点和父节点间的距离是1,和相邻兄弟节点间的距离是2,
题目:求一个二叉树中任意两个节点间的最大距离,两个节点的距离的定义是这两个节点间边的个数,比如某个孩子节点和父节点间的距离是1,和相邻兄弟节点间的距离是2,优化时间空间杂度。 思路一:计算一个二叉树的最大距离有两个情况:情况A: 路径经过左子树的最深节点,通过根节点,再到右子树的最深节点。情况B: 路径不穿过根节点,而是左子树或右子树的最大距离路径,取其大者。首先算
2014-07-19 00:14:55 2284
原创 输入一个正数n,输出所有和为n的连续正数序列
题目:输入一个正数n,输出所有和为n的连续正数序列举例:输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1,2,3,4,5;4,5,6;7,8。解法一:开辟一个大小为n/2 + 1(n为奇数,n为偶数则大小为n/2 - 1)的数组,值从1到n。两个指针p1指向1,p2指向p1的下一个。然后循环,如果p1和p2之间的元素和小于n,p2++;大于n,p1++;等
2014-07-19 00:02:04 2693
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人