/// @brief BKDR Hash Function /// @detail 本 算法由于在Brian Kernighan与Dennis Ritchie的《The C Programming Language》一书被展示而得 名,是一种简单
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 (如果读者不太了解什么叫分治法,可以去看看《算法导论》第一二章。)归并过程为:
今天,给大家带来的是交换排序。 首先,我们来了解一下什么叫交换排序。所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。 那么接下来,我们来看一下。冒泡排序。冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。选择排序:思想n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:①初始状态:无序区为R[1..n],有序区为空。②第1趟排序在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第
在Linux系统中查询,功能有很多。但是,find是linux下最棒的命令之一,其查询功能非常强大。接下来,我们便来看看其的强大之处。首先是find的语法:find [起始目录] 寻找条件 操作 以下将详细介绍find的大多数用法:工作方式:其沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作打印文件和目录列表由此可见,find . -print #
C++11标准提供了说明符final。需要注意的是,C++11中的final不是关键字,而是说明符,这意味着您可以将它(在不引起混淆的情况下)将它作为标识符使用(为了兼容以前的代码)。关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。C++11标准提供了说明符final,用于阻止派生类覆盖特定的虚方法。或是阻止一个类成为基类。语法1:class S
插入排序分为:直接插入排序,二分插入排序(又称折半插入排序),链表插入排序,希尔排序(又称缩小增量排序)。属于稳定排序的一种(通俗地讲,就是两个相等的数不会交换位置) 。在这里我具体讲直接插入排序和希尔排序。直接排序插入直接插入排序是由两层嵌套循环组成的。外层循环标识并决定待比较的数值。内层循环为待比较数值确定其最终位置。直接插入排序是将待比较的数值与它的前一个数值进行比较,所以外层
大家都知道linux文件系统中的每个文件都有三种时间戳:访问时间(atime——access time):就是上次访问这个文件的时间。改变时间(ctime——change time):就是文件的inode改变的时间(什么是inode?)当你往一个文件中添加数据或者删除数据的时候,修改文件所有者的时候,链接改变的时候,文件的ctime就会发生改变。修改时间(mtime——modification t
在C和C++中,强制类型转换时常出现,例如:void Test () { int i = 1; // 隐式类型转换 double d =&nb
说起指针相信大家一定不陌生,那么智能指针呢?首先,我们来看看,为什么要有智能指针?例如void Test2 () { int* p1 = new int(2); bool isEnd = t
看下面代码,你是否能得出正确答案呢?#include<stdio.h> #include<string.h> #include <pthread.h> void* print1(void* data){ printf("1 "); } &
首先,我们来看一个题typedef struct list_t{ struct list_t *next; struct list_t *prev; char data[0]; }list_t;此时,你知道32位系统中,sizeof(list_t)的值为多少么?这时,你会告诉我char data[0]在C和C++中是不被允许的,
程序编译过程
对于malloc来说,很多人都不陌生。然而,我们对它的了解并不是很深,我们常常会用,而不明白其中的原理,从而,很容易造成内存泄漏,内存碎片等问题。这常常让我们头痛不已,故而我们需要进一步的去了解它。首先,什么事malloc?在很多人认为malloc是个关键字,但是malloc只是C的标准库中提供的一个普通函数。malloc 向系统申请分配指定size个字节的内存空间,返回类型是 void* 类型。
在我们写代码是有时要注释,所以很多时候,我们都是ctrl+k+c.既然常常用到,我们不妨写写看看它是怎么转换的。一方面提高编程能力,另一方面,也可以提高自身的的思考和处理问题的能力。 首先,我们来思考注释转换一个有多少问题。 1.一般情况/* int i = 0; */// 2.换行问题/* int i = 0; */int j = 0;/* int i = 0; */int
进程地址空间,堆栈
初次学习C语言是大一的时候,对于一个全部由字母和符号组成的,感觉到无趣和乏味。也许是天生对数字不敏感,也许是觉得没用(写半天只为输出一个hello),故而让我觉得学习C语言真的很难。难到都不想学,从而真的明白了兴趣是多么重要。对于一个都没尝试过的东西,就放弃的我,我为那时的我感到可悲。并且,都不会利用图书馆学习,只会坐等老师的指导的人感觉到更可悲。一个不会自主学习,没有求知欲的人,特
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号