数据结构和算法
文章平均质量分 61
liyu1006
这个作者很懒,什么都没留下…
展开
-
有N个大小不等的自然数(1--N),请将它们由小到大排序。
要求程序算法:时间复杂度为O(n),空间复杂度为O(1)。我看了网上的答案,感觉不正确,现在我自己写出的答案供大家参考。#include #include #include void sort(int*, int);int main(){ int arr[] = {5,9,3,7,4,2,8,6,1,10}; int n = sizeof(arr)/sizeof(int);原创 2013-03-08 00:15:59 · 859 阅读 · 0 评论 -
归并排序
看懂了这段代码,就真的理解了归并排序。#include class MergeSort{private: int *arr_; int size_; void mergeSort(int *tmp_p, int lowerBound, int upperBound){ if(lowerBound == upperBound) return; else{ int原创 2013-03-21 21:42:19 · 494 阅读 · 0 评论 -
实现一个搜索二叉树
先来看代码:BinaryTree.h#ifndef _BINARY_TREE_#define _BINARY_TREE_class BinaryTree{private: class Node{ public: Node(int); int data_; Node *left_; Node *right_; }; Node *root_; int siz原创 2013-03-31 11:02:43 · 705 阅读 · 0 评论 -
全排列
全排列在笔试面试中很热门,因为它难度适中,既可以考察递归实现,又能进一步考察非递归的实现,便于区分出考生的水平。所以在百度和迅雷的校园招聘以及程序员和软件设计师的考试中都考到了,因此本文对全排列作下总结帮助大家更好的学习和理解。对本文有任何补充之处,欢迎大家指出。首先来看看题目是如何要求的(百度迅雷校招笔试题)。用C++写一个函数, 如 Foo(const char *str),转载 2013-03-17 10:49:26 · 503 阅读 · 0 评论 -
浅谈HTTP中Get与Post的区别
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。 1转载 2013-03-14 21:33:36 · 533 阅读 · 0 评论 -
求数值型数组的子数组和最大值
题目:求子数组的最大和 输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为 O(n) 。 例如输入的数组为 1, -2, 3, 10, -4, 7, 2, -5 ,和最大的子数组为 3, 10, -4, 7, 2 ,因此输出为该子数组的和18 。分析:原创 2013-02-28 22:44:21 · 416 阅读 · 0 评论 -
小计算题
1. 有两个房间,一间房里有三盏灯,另一间房有控制着三盏灯的三个开关,这两个房间是分割开的,从一间里不能看到另一间的情况。现在要求受训者分别进这两房间一次,然后判断出这三盏灯分别是由哪个开关控制的。分析:先进有开关的房子,先开A开关,过一段时间关上,再开B开关,然后进入有灯的房子,亮着的灯由B开关控制,用手摸熄灭的两盏灯,热的受A开关控制,剩下的受C开关控制。2.你让一些人为你工作转载 2013-03-10 22:59:07 · 499 阅读 · 0 评论 -
逆序一个单链表
把一个单链表逆序。#include typedef struct node{ int data; struct node *next;}node_t;void insert(node_t **head, int data){ node_t *node = (node_t*)malloc(sizeof(node_t)); node->data = data; node->nex原创 2013-03-09 20:14:20 · 717 阅读 · 0 评论 -
判断单链表是否有环
先来看看程序,再解释:#include typedef struct node{ struct node *next;}node_t;bool IsExitsLoop(node_t *head){ node_t *slow = head; node_t *fast = head; while( fast && fast->next ) { slow =原创 2013-03-09 12:16:39 · 740 阅读 · 0 评论 -
把递归实现的问题转化成栈来实现
函数的调用过程,其实就是压栈和出栈,而递归就是自己调用自己,也是压栈和出栈问题,所以,任何递归实现的问题都可以用栈来实现。#include #include int func(int n){ if(n < 1) return -1; else if(n == 1) return 1; else return n + func(n-1);}class Test{pu原创 2013-03-25 20:26:35 · 681 阅读 · 0 评论