自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (2)
  • 收藏
  • 关注

原创 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<N; ++i) { cin >> temp[i]; } int data[10005]; f

2012-05-11 20:04:10 589

原创 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)

2012-05-11 19:36:02 486

原创 归并排序

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

2012-05-03 11:40:45 583

原创 实现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

2012-05-02 15:28:26 489

原创 堆排序

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

2012-05-01 11:41:23 598

原创 希尔排序

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

2012-05-01 10:45:38 445

原创 插入排序

插入排序是最简单的排序之一,有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(

2012-05-01 10:19:27 480

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

#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

2012-04-10 22:25:12 2119

原创 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(

2012-03-26 16:01:15 2820

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

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

2012-03-25 13:54:08 9190 1

原创 判断一个链表中是否有环

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

2012-03-22 22:11:21 5624

原创 二叉树的非递归遍历

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

2012-03-21 17:36:11 643

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

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

2012-03-20 21:28:45 516

原创 第五章 表达式

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

2012-03-19 20:18:08 853

原创 第四章 数组和指针

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

2012-03-10 00:02:24 678

原创 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

2012-03-07 17:01:02 641

原创 最长公共子序列问题

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

2012-03-04 22:20:24 410

原创 第三章 标准库类型

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

2012-03-04 10:27:06 660

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

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

2012-03-03 12:55:06 2681

原创 第二章 变量和基本类型

知识点:1、C++中规定了每个算术类型的最小存储空间:bool-char8位wchar_t16位short16位int16位long32位float6位有效数字double10位有效数字long double10位有效数字2、对于8

2012-03-03 11:03:02 640

原创 第一章 快速入门

知识点:1、main函数是唯一被操作系统显示调用的函数;2、定义函数必须制定四个元素:返回类型、函数名、圆括号内的参数表、函数体;3、main函数的形参个数是有限的,并且必须返回int型;4、C++并没有直接定义输入输出的任何语句,这种功能是由标准库提供的;5、标注库定义了四个IO对象:一个istream对象cin和三个ostream对象cout、cerr、clog,cerr对

2012-03-02 21:29:11 361

linux课件(PPT格式的)

本课件是PPT形式的,非常适合初学linux的同学学习,很容易引导初学者入门,是很好的入门教程。

2011-11-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除