关闭

hdoj 1280 前m大的数

给定一个包含N(N #include using namespace std; int main(void) { int N, M; while(cin >> N >> M) { int *temp = new int[N]; for(int i=0; i> temp[i]; } int data[10005]; f...
阅读(421) 评论(0)

hdoj 3791 二叉搜索树

#include using namespace std; struct BiTreeNode//结点结构体 { char ch; BiTreeNode *left; BiTreeNode *right; BiTreeNode(char x, BiTreeNode *l = NULL, BiTreeNode *r = NULL) :ch(x), left(l), right(r)...
阅读(341) 评论(0)

归并排序

归并排序的基本操作是合并两个已排序的表。因为两个表是已排序的,所以若将输出放到第三个表中则该算法可以通过对输入数据一趟排序来完成。基本的合并算法是取两个输入数组A和B、一个输出数组C以及三个计数器(Actr、Bctr、Cctr),他们的初始位置位于对应数组的初始端。A[Actr]和B[Bctr]中的较小者被复制到C[Cctr],相关的计数器向下移动一步。当两个输入表一个用完时,则将另一个表中的剩余...
阅读(377) 评论(0)

实现atoi函数

int a_to_i(const char *str) { int cur; //当前字符 int total;//当前整型数据 int sign; //数据符号 //去点前面的空白符 while(isspace((int)(unsigned char)*str)) { str++; } //如果*str最高位是1,那么直接将其付给int型时会变成负数,所以必须先转成un...
阅读(380) 评论(0)

堆排序

堆排序利用了大根堆(或小根堆)堆顶记录的关键字最大(或最小)这一特征,使得在当前无序区中选取最大(或最小)关键字的记录变得简单。 (1)用最大堆排序的基本思想 ① 先将初始文件R[1..n]建成一个最大堆,此堆为初始的无序区; ② 再将关键字最大的记录R[1](即堆顶)和无序区的最后一个记录R[n]交换,由此得到新的无序区R[1..n-1]和有序区R[n],且满足R[1...
阅读(470) 评论(0)

希尔排序

希尔排序是对插入排序的一种改进,具体的时间复杂度本人还没有完全理解,只是明白了它是怎么运行的。 希尔排序基本思想: 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组,所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2 #include #include #include using namespace std; te...
阅读(341) 评论(0)

插入排序

插入排序是最简单的排序之一,有N-1趟排序组成,最差时间复杂度为O(n^2),最优时间复杂度为O(n),平均时间复杂度为O(n2)。 #include #include #include using namespace std; template void insertSort(vector &data) { int j = 1; int size = data.size(...
阅读(386) 评论(0)

写一个寻找数组中第二大的数的程序

#include using namespace std; const int MAX_INT = 200000000; int find_sec_num(int *num, int count); int main(void) { int num[] = {1,2,3,4,5,6,7,8,9}; //要查找的数组 int count = sizeof(num)/sizeof(i...
阅读(1820) 评论(0)

String类中构造函数、拷贝构造函数、赋值函数的实现

class String { public: String(const char *str = NULL); String(const String &rhs); String &operator=(const String &rhs); ~String(); private: char *m_str; } String::String(const char *str) { if(...
阅读(2627) 评论(0)

单链表逆序(递归&非递归)

结点定义: struct Node { int data; Node *next; }; 方法一: 设置两个临时指针pre和ne分别标记当前指针的前驱和后继,将当前结点的next指针指向前驱,然后把前驱指针和当前指针往后移动,继续遍历,当然每次移动后都要重新标记当前结点的后继结点,代码如下: void reverse(list *&head) {...
阅读(5509) 评论(0)

判断一个链表中是否有环

如何判断一个链表中是否存在环: 设置两个指针,开始都指向链表头,然后其中一个指针每次向前走一步,另一个指针每次向前走两步,如果快的遇到NULL了,证明该链表中没有环,如果有环,快的指针每次都要比慢的多走一步,最终两个指针会相遇,(注意:这里快指针不会跳过慢指针而不相遇,因为它每次都只比慢指针多走一个单位) bool judge(list *head) { if(head =...
阅读(4894) 评论(0)

二叉树的非递归遍历

#ifndef __BINARYTREE_H__ #define __BINARYTREE_H__ #include #include #include using namespace std; template class BinaryTree { public: BinaryTree(); void prevCreateTree(); //按先序序列创建二叉树 vo...
阅读(543) 评论(0)

二叉树的三种遍历(递归)

#ifndef __BINARYTREE_H__ #define __BINARYTREE_H__ #include using namespace std; template class BinaryTree { public: BinaryTree(); void prevCreateTree(); //按先序序列创建二叉树 void prevOrderTraverse...
阅读(380) 评论(0)

第五章 表达式

习题5.2 计算下列表达式的值,并指出哪些结果值依赖于机器? -30 * 3 + 21 / 5 -30 + 3 * 21 / 5 30 / 3 * 21 % 5 -30 / 3 * 21 % 4 【解答】 各表达式的值分别为-86、-18、0、-2。其中,最后一个表达式的结果值依赖于机器,因为该表达式中除操作只有一个操作数为负数。 习题 5.4 定义术...
阅读(559) 评论(0)

第四章 数组和指针

知识点: 由于数组和指针这部分知识比较深奥,本菜鸟决定将C和C++的指针部分的知识点全归到C语言部分来整理,所以这里就只总结一些题目。 部分题目: 习题4.2 下列数组的值是什么? string sa[10]; int ia[10]; int main() { string sa2[10]; int ia2[10]; } 【解...
阅读(476) 评论(0)

STL中vector部分功能的实现

#ifndef __VECTOR_H__ #define __VECTOR_H__ template class Vector { public: explicit Vector(int size = 0);//加explicit关键字是为了防止类型的隐式转换 Vector(const Vector &rhs); //拷贝构造函数 ~Vector(); const Vector...
阅读(491) 评论(0)

最长公共子序列问题

问题描述: 给定整数A1,A2,…,AN(可能有负值),求连续子序列和的最大值。(为方便起见,如果所有整数都为负值,则最大子序列和为0) 方法一: 这是个显而易见的方法,几乎每个人在第一眼看到该问题都能够想出来的方法。就是将所有的子序列找出来,然后求和最大的一个。如果序列足够大,该方法的效率可想而知。 代码如下: #include #include...
阅读(311) 评论(0)

第三章 标准库类型

知识点: 1、string类 几种初始化string类的方法: string s1;//默认构造函数,s1为空串 string s2(s1);//将s2初始化为s1的一个副本 string s3("value");//将s3初始化为一个字符串字面值副本 string s4(n, 'c');//将s4初始化为字符c的n个副本 string类型的输入操作符: 读取并...
阅读(472) 评论(0)

选择问题(求N个数中第k个最大者)

方法1: 对这N个数进行排序,然后找出第k个最大者。 这是最容易想到的也是最容易写出来的方法,但这种方法效率很低,当N比较大的时候不适合用。 代码如下: #include #include using namespace std; typedef vector Vect; typedef vector::iterator Iter; void sort(Vect &ive...
阅读(2093) 评论(0)

第二章 变量和基本类型

知识点: 1、C++中规定了每个算术类型的最小存储空间: bool - char 8位 wchar_t 16位 short 16位 int 16位 long 32位 float 6位有效数字 double 10位有效数字 long double 10位有效数字 2、对于8...
阅读(460) 评论(0)
21条 共2页1 2 下一页 尾页
    个人资料
    • 访问:23729次
    • 积分:505
    • 等级:
    • 排名:千里之外
    • 原创:21篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档