自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

炜的BLOG

厚积薄发

  • 博客(11)
  • 资源 (2)
  • 收藏
  • 关注

原创 二分查找

<br />http://news.csdn.net/a/20100423/218099.html看到这个。。。说只有10%的程序员写出二分查找算法,我自己也去试了一下,果然是费了很长时间,结果看了文章下面的参考才写出没bug的。。。<br />二分查找:二分查找也称为折半查找要求线性表中的结点必须己按关键字值的递增或递减顺序排列。它首先用要查找的关键字k与中间位置的结点的关键字相比较,这个中间结点把线性表分成了两个子表,若比较结果相等则查找完成;若不相等,再根据k与该中间结点关键字的比较大小确定下一步查找

2011-02-14 02:50:00 471 1

原创 选择排序之堆排序

<br />堆排序,在排列的过程中将元素看成完全二叉树的结构,利用双亲结点和子节点之间的关系,找出最大(或小)的元素。<br />双亲结点为Ri,则其左孩子和右孩子分别为R2i,R(2i+1),利用这一点关系,通过构造堆的方法排序。<br />假设我们要输出从小到大的排列,那么可以构造大根堆,即寻找堆的最大元素,上浮到根节点(还有就是保证双亲结点大于孩子节点),再将跟点与最后一个叶子结点交换,接着去除最后一个叶子结点,堆剩下的堆重新筛选,找出最大元素,上浮到根节点,与最后一个叶子结点交换......一直循环

2011-02-14 01:50:00 378

原创 选择排序之直接选择排序

<br /> 直接选择排序比较简单,步骤:<br />(1)选出序列中最小的元素;<br />(2)和序列中第一个元素进行交换;<br />(3)从序列第二个位置开始,在剩余的序列元素中重复上面的步骤直到排序完成。<br />代码如下:unix环境2011-02-12<br />#include <stdio.h> #include <stdlib.h> void print(int a[], int len) { int i; for(i = 0; i < len; i++) pr

2011-02-12 22:11:00 403

原创 交换排序:冒泡排序和快速排序

<br />1.冒泡排序:冒泡排序算法是从最下面的记录开始,对每两个相邻的关键字进行比较,且使关键字较小的记录换至关键字较大的记录之上,使得经过一趟冒泡排序后,关键字最小的记录到达最上端,接着,再在剩下的记录中找关键字次小的记录,并把它换在第二个位置上。依次类推,一直到所有记录都有序为止。最小的数就如同水泡一样向上漂浮到水面,故谓之冒泡排序。<br />冒泡排序的改进:在有些情况下,在第i(i<n-1)趟时已排好序了,但仍执行后面几趟的比较。实际上,一旦算法中某一趟比较时不出现记录交换,说明已排好序了,就可

2011-02-12 01:50:00 451

原创 插入排序:直接插入排序和希尔排序

插入排序(1)直接插入排序:直接插入排序的基本操作是将当前无序区的第1个记录R[i]插入到有序区R[0..i-1]中适当的位置上,使R[0..i]变为新的有序区(2)希尔排序:取一个小于n的整数d1(一般为n/2),作为第一个增量,将n个记录分成d1个子序列,所有距离为d1的倍数放在同一组中,在组中进行直接插入排序,然后取第二个变量(一般为d1/2),重复上述步骤,直到增量为1,即所有记录放在同一组中进行直接插入排序为止。举例说明:      9 8 7 6 5 4 3 2 1 0第一次,d=5     4

2011-02-11 01:11:00 416

原创 KMP算法

KMP算法i指针表示主串(被匹配串),j指针表示模式串首要确认next[]的值,决定匹配串要移动的距离举例说明:匹配串为S{abcac},主串(被匹配串)为P小标从0开始next[0]=-1next[1]=0next[2],则看s[0]=?s[1],若相等,则next[2]=1,即看字符串S[2]前面是否有字串相等,字串{a}!={b},那么next[2]=0next[3],则看s[0]=?s[2],s[0,1]=?s[1,2],即看字符串S[3]前面是否有字串相等,next[3]的值为最大相等字串的长度,

2011-02-08 17:17:00 278

转载 整理LINUX环境下常用的字符串相关C函数

index(查找字符串中第一个出现的指定字符)相关函数 rindex,srechr,strrchr定义函数:char * index( const char *s, int c);函数说明:index()用来找出参数s字符串中第一个出现的参数c地址,然后将该字符出现的地址返回。字符串结束字符(NULL)也视为字符串一部分。返回值:如果找到指定的字符则返回该字符所在地址,否则返回0。memccpy(拷贝内存内)函数说明:memccpy()用来拷贝src所指的内存内容前n个字节到dest所指的地址上。与memc

2011-02-06 15:06:00 411

原创 数据结构---队列

//队列,是一种运算受限制的线性表,只允许在一端进行插入(队尾),另一端进行删除 #include #include #include typedef struct student { int num; struct student *next; }node; typedef struct linkqueue { node *front;//队首指针 node *rear;//队尾指针 }queue; queue *insert(queue *HQ)//

2011-02-06 14:05:00 376

转载 getchar,scanf以及缓冲区的概念(转)

转自http://blogold.chinaunix.net/u1/39867/showart_319880.html你肯定会奇怪为什么一开始先说这个,一开始不都是数据类型什么的嘛,这个写在最前面因为后面的程序即使最简单的code都会用到输入输出,输出比较简单,可以放在后面再说,但是输入就不同了,如果不先了解一下,可能会得到和你预想不同的结果哦^_^.也正是由于和一般的c语言介绍方式不同,为了看起来正规一些,我就把这章叫做chapter0了,完全可以先跳过去,直接看chapter1.1.getchar 

2011-02-03 20:17:00 933

原创 数据结构---单链表(建立,节点删除,节点插入)

//UNIX环境#include #include #include typedef struct student{ int num; char name[16]; struct student *next;}node;node *creat()//创建链表{ int x; int cycle = 1; char stu_name[16]; node *head,*p,*s; head =(node*)malloc(sizeof(node)); p = head; while(cycle) {  print

2011-02-03 18:11:00 8150

转载 (转)typedef总结

<br /> 不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中。typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好,我就不加修改的引用过来了,以下是引用的内容。<br />用途一:<br />定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:<br />char* pa, pb; // 这多数

2011-01-27 17:09:00 355

mod_security

mod_securitymod_securitymod_security

2011-07-27

数据结构 李春葆 PPT+源码

数据结构 李春葆 PPT+源码,欢迎下载

2011-02-07

空空如也

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

TA关注的人

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