自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (4)
  • 收藏
  • 关注

转载 数据结构与算法 面试题

所有的题目:http://blog.csdn.net/jokes000/article/details/707052051题答案:http://blog.csdn.net/ylf13/article/details/1451969560题答案:http://www.cnblogs.com/byfei/archive/2012/11/12/31

2017-09-24 11:45:29 315

原创 堆排序—Java

package sort;public class heapSort {    //  前 n个是大顶堆    static void percUp(int[] a, int n, int k){                int hole = n + 1; //在数组中排第几个输, index        while(hole/2 >= 1 && k > a

2017-09-09 19:06:42 265

转载 State模式

http://www.cnblogs.com/wangjq/archive/2012/07/16/2593485.html

2017-05-26 11:13:45 237

原创 有序表的折半查找

折半查找又称二分查找,其基本思想是,在顺序存储的有序序列中要查找某个关键字,首先用有序序列的中间元素和这个关键字作比较,如果小于关键字,则在上半部分查找,如果大于关键字,则在下半部分查找,如果等于关键字,则返回。不断地重复上述步骤,直到找到要查找的关键字为止,如果所查找区域没有所查找的关键字,则查找失败,返回。         代码如下:int Binary_Search(int *a,

2013-12-26 19:54:17 2461

原创 快速排序

快速排序的基本思想:        在所需要排序的序列中选出一个关键字,将所有小于此关键字的数排列在该关键字左侧,所有大于该关键字的数排列在该关键字的右侧,然后再分别对较大的序列和较小的序列进行相同操作,最后使得整个序列都有序为止。        首先定义一个结构:#define MAXSIZE 9typedef struct{ int r[MAXSIZE + 1];

2013-12-26 14:06:33 542

原创 二分排序法

插入排序发的主要思想是将要排序的第i个元素序列插入到前面已经排好的i-1个元素序列中,比较关键的一点是在原序列中找到要插入的位置,直接插入法的想法是将第i个元素从和前面的第i-1,i-2个元素一一作比较,找到要插r入的地方,二分排序的主要想法是通过二分查找法找到前面要插入的地方。实现代码如下:void BinarySort( int array , int n){ int i , j;

2013-11-27 17:50:33 576

转载 一维数组和指针 array、&array[0]和&array的区别

char array[5] = {'a','b','c','d','e'};array的长度和&array[0] 长度是一个字节,都是指向第一个数组元素。array+1的长度和&array[0]+1,都是加一个字节长度,指向第二个元素。&array的长度是数组的长度是五个字节,(sizeof(array)获取到长度),&array执行数组array。&array+1 是指向数组arra

2013-11-27 15:01:07 1159

原创 归并算法进行排序

归并算法是一种效率较高且稳定的算法,归并算法总是要将序列中的记录都扫描一遍,所以总的时间复杂度为o(nlogn),这是归并算法中最好、最坏、平均的时间性能。       递归方式的归并算法:       首先定义函数 sort(int SR[ ], int s, int t),void sort(int SR[], int s, int t){ int temp; if(SR[s

2013-11-24 17:48:55 563

原创 堆排序(参考大话数据结构)

堆排序是一种非稳定的排序,属于选择排序类,它的核心是要构建一个大顶堆或者是小顶堆,以大顶堆为例,根节点的值为最大值,交换到数组的最后,然后对1至n-1的元素继续构建一个大顶堆,再将根节点与第n-1个元素交换,如此循环,直到最后数组为有序。        首先定义要用到的结构:#define MAXSIZE 10typedef struct{ int r[MAXSIZE +

2013-11-21 14:56:20 765

原创 二叉树的建立及遍历

首先定义二叉树链表的节点结构:typedef char TElemType;typedef struct BiTNode{ TElemType data; struct BiTNode *lchild, *rchild;} BiTNode, *BiTree;        先序遍历创立二叉树链表,void CreateBiTree(BiTree *T){

2013-11-19 18:41:47 860

原创 希尔排序

希尔排序的思路是先将序列以某个增量分成几个子序列,然后对这些子序列分别进行插入排序,然后待序列基本有序之后进行整个序列的插入排序,代码如下:void ShellSort(int Array[], int k){ int gap; int tmp; int j; int i; int n; for(gap = k/2; gap >=1; gap /=2) for(j = 0;

2013-11-17 22:51:25 336

原创 直接插入排序

直接插入排序的思路是这样的:假设前i个数已经排好,将第i+1个数依次和前面的数进行比较,如果array[i+1]小于array[j],则将array[i+1]插入到array[j]的前面,插入过程是这样的,将array[i+1]储存到tmp中,然后array[j]到array[i]之间的数后整体后移一位,然后将tmp中的值赋给array[j]。代码如下:void InsertSort(int

2013-11-16 23:39:43 668

原创 简单的选择排序

简单选择排序算法,思路是这样的,取一个中间变量min来记录最小的数的下标,第一次循环,i = 1,min的下标首先为1,然后j =2一直遍历[]到数组结束,Array[min]和Array[j]作比较,如果Array[min] > Array[j],则min = j,j再取下一个数,一直到j遍历到数组的结尾,则此时Array[min]的值为第一次遍历的最小值,Array[min]h和Array[1

2013-11-16 22:26:03 607

原创 排序算法的C语言实现以及各个算法的时间复杂度和空间复杂度分析(冒泡排序)

排序算法作为一种重要的算法在很多方面有应用,下面用C语言来实现各种排序算法

2013-11-16 21:15:21 3509

原创 单链表的操作

单链表是一种非常重要的数据结构,下面用C语言对单链表的操作做一个简单的总结:1、单链表的创建:

2013-11-15 19:54:50 484

原创 自增运算符“++”的使用注意事项

自增运算符++的使用有时候会让人混淆,特别是在while循环语句中,稍不注意,就会出现混淆的麻烦。#includeint main(){ int i = 0; while( i++ < 10) printf("%d ", i); return 0;} 比如说上面这段代码,最后的输出结果是什么呢?是0,1,2,3,4,5,6

2013-11-14 22:28:47 1050

原创 C++中的virtual与动态绑定

面向对象编程基于三个基本概念:数据抽象、继承和动态绑定。在C++中,用类进行数据抽象,用类派生从一个类继承另一个类:派生类继承基类的成员。动态绑定使编译器能够在运行时决定是使用基类中定义的函数还是派生类中定义的函数。        继承和动态绑定在两个方面简化了我们的程序:能够容易地定义与其他类相似但又不相同的新类(继承), 能够更容易地编写忽略这些相似类型之间区别的程序。 (C++ Prim

2013-11-12 22:28:39 671

原创 二叉树的遍历

二叉树的遍历通常有前序遍历、中序遍历和后序遍历,          前序遍历:         先访问根节点,再访问左节点,再访问右节点。         中序遍历:         先访问左节点,再访问根节点,再访问右节点。         后序遍历:         先访问左节点,再访问右节点,再访问根节点。         前、中、后序遍历的依据主要是根据根节点的

2013-11-12 17:10:29 288

原创 sizeof和strlen之间的区别

sizeof和strlen之间的区别是面试笔试过程中经常会被考到的问题,下面对这两个函数的用法做一下简单小结。char* ss1 = "0123456789";char ss2[] = "0123456789"; char ss3[100] = "0123456789";cout cout 输出结果如图所示:由输出的结果可知,ss1传递给sizeof的是

2013-11-12 14:59:55 514

转载 经典的字符数组,字符指针的题(转载)

const修饰的变量放在哪里?heap or stack以及下面这个程序#includeusing namespace std;void main(){ char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc";   const char

2013-11-12 14:36:50 715

原创 构造函数/复制构造函数/析构函数/赋值操作符的总结

构造函数/复制构造函数/析构函数/赋值操作符

2013-11-12 11:43:17 782

原创 C++中继承机制下基类public/private/protected成员的访问方式

C++中继承机制的繁复和微妙让作为初学者的我感觉头痛,下面对基类中public/private/protected成员的访问方式做一个总结。例子来自Primer C++ 中的书店购书的管理系统。基类:class Item_base {public: Item_base(const std::string &book = "", double sales_price = 0

2013-11-07 17:52:04 1892

FiveChess五子棋,没有机器,能网络双人对战

MFC编写的五子棋网络双人对战,主要参考《Visual C++游侠开发经典案例详解》、《VC++深入详解》、《Visual C++网络编程》

2014-03-08

C程序设计抽象思维

C程序设计抽象思想:C语言描述,网上搜来的完整版

2013-09-16

空空如也

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

TA关注的人

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