- 博客(41)
- 资源 (3)
- 收藏
- 关注
原创 快速排序的优化
//快速排序//1.从数列中挑出一个元素,称为 “基准”(pivot),//2.重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。//3.递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序int PartSort(
2016-05-27 17:43:42 411
原创 Linux中find用法
Linux下查找文件的命令有两个;locate 和 find 首先说下locate,locate这个命令是对其生成的数据库进行遍历(生成数据库的命令:updatedb),这一特性决定了用locate查找文件速度很快,但是locate命令只能对文件进行模糊匹配,在精确度上来说差了点,简单介绍下它的两个选项: #locate -i //查找文件的时候不区分大小写 比如:lo
2016-05-26 09:38:21 1020
原创 排序的几种类型
//快速排序//排序思想://1.从数列中挑出一个元素,称为 “基准”(pivot),//2.重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。//3.递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序650) this.
2016-05-26 09:38:18 835
原创 堆的实现(大小堆及 优先队列)
一、堆的概念 堆数据结构是一种数组对象,它可以被视为一棵完全二叉树结构。 堆结构的二叉树存储是: 最大堆:每个父节点的都大于孩子节点。 最小堆:每个父节点的都小于孩子节点。 堆栈中的物体具有一个特性: 最后一个放入堆栈中的物体总是被最先拿出来, 这个特性通常称为后进先出(LIFO)队列。 堆栈中定义了一些操作。 两个最重要的是PUSH和POP。 PUSH操作在堆栈的顶部加入一
2016-05-26 09:38:15 5700
原创 稀疏矩阵
稀疏矩阵是矩阵中非零元素的个数远远小于矩阵元素的总数,并且非零元素的分布没有规律,通常认为非零元素比上矩阵所有元素的值小于等于0.05时,则称该矩阵为稀疏矩阵(sparse matrix);与之相区别的是,如果非零元素的分布存在规律(如上三角矩阵、下三角矩阵、对角矩阵),则称该矩阵为特殊矩阵。 一个稀疏矩阵中有许多元素等于零,这便于矩阵的计算和保存.如果Matlab把一个矩阵当作稀疏矩阵,那么
2016-05-26 09:38:13 763
原创 二叉树的先序、中序、后序、层序递归及非递归遍历
二叉树是一种树形结构,它每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点)。所谓度是结点拥有的子树数。650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/7F/31/wKioL1cWRZ_g1ddLAAAn7bdu_34291.png" title="C47G6G`N73Y9V`4O)FFYDBN.png " alt="wKi
2016-05-26 09:38:10 579
原创 广义表
广义表(Lists,又称列表)是一种非线性的数据结构,是线性表的一种推广。即广义表中放松对表元素的原子限制,容许它们具有其自身结构。650) this.width=650;" src="http://s4.51cto.com/wyfs02/M00/7F/2A/wKioL1cVuxqzk4guAABOfPTUY_Y086.png" title="QQ截图20160419125358.png" alt
2016-05-26 09:38:07 447
原创 单链表的增删查 逆置 倒数第k个节点等问题
对于单链表而言,它没有双链表那么复杂,它只有头节点,尾节点,节点数据,后继指针。在下面本人实现了 单链表的 增 删 插 查 改。 #include#include#include#includetypedef int Datatype;typedef struct SListNode{ Datatype data; struct SListNode*next;
2016-05-26 09:38:04 223
原创 实现简单的迷宫
我们知道栈的特点是:后进先出(First In Last Out);也就是说只能在栈的尾部进行压栈和出栈,而且出栈的时候只能从最后一个数据开始。 所以我们利用栈这个特点,来实现这个迷宫。在这之中我们要采用“回溯”的方法去处理当遇到路径不通的情况。 原理:每找到一个通路,就将这个数据压栈,这样当前位置的上一个位置就位于栈的顶部,假如当前位置的上下左右都找不到通路的时候,就开始回溯,也就是开始从来
2016-05-26 09:38:01 372
原创 斐波那契序列的递归和非递归的实现
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci[1])以兔子繁殖为例子而引入,故又称为“兔子数列”。 指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义: F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)
2016-05-26 09:37:58 684
原创 虚函数
虚函数是重载的另一种表现形式。这是一种动态的重载方式,它提供了一种更为灵活的、运行时的多态性机制。虚函数允许函数调用与函数体之间的联系在运行时才建立,也就是在运行时才决定如何动作,即所谓的动态连编。 虚函数首先是基类中的成员函数,但这个成员函数前面加了关键字virtual,并在派生类中被重载。 它的一般形式: virtual 返回类型 函数名(形参表){ 函数体} 在
2016-05-26 09:37:56 1041
原创 c++中的模板
一、概念: 所谓模板,通俗的理解就是像模具一样,通过它就能做出东西,一般是样式啥都是固定的,就像所谓的作文模板那样,能用的上就直接拿过来添加点自己的东西。那就是自己的。(我是这样理解的) 但在编程中,模板是泛型编程的基础。所谓泛型编程就是编写与类型无关的逻辑代码,是一种复用的方式,模板分为模板函数和模板类。二、模板函数 举个例子:(假设要实现一个比较两个数是否相等的重载函数) bool i
2016-05-26 09:37:53 216
原创 new 、delete和malloc、free的解析及区别
在c语言中使用函数malloc和free来进行内存管理(分配与释放),在c++中则提供了运算符new和delete来做同样的工作,后者比前者性能更优越,使用更方便更灵活。1.new用于内存分配的基本形式为: 指针变量名=new 类型在程序运行过程中new是从堆的一块自由存储区中为程序分配一块与类型字节数相适应的内存空间,并将该块内存的首地址存于指针变量中。eg. int *p; //声明一
2016-05-26 09:37:50 436
原创 单链表的插入 删除 及带环 问题
#include#include#include#includetypedef int Datatype;typedef struct SListNode{ Datatype data; struct SListNode*next;}SListNode;void Erase(SListNode*&pHead, SListNode *pos);void PushBack(SLi
2016-05-26 09:37:47 250
转载 操作系统实验之作业调度算法
#include #include #include #include void FCFS(); //先来先服务 void SJF(); //短作业优先void input(); //输入函数 void operation(); //运算输出函数 int n; //全局变量 作业输入量 double avturn; //平均周转时间
2016-05-26 09:37:45 1642
转载 打印1到最大的n位数。
面试题:(源自《剑指offer》)输入数字n,按顺序打印出从1到最大的n位十进制数。比如:输入3,则打印出1、2、3一直到最大的3位数999.[陷阱]:这个题目很容易想到的办法就是先求出最大的数。然后循环输出就可以了。#include#include#include#includevoid my_sprintf(char * arr, int len){ bool start =
2016-05-26 09:37:42 228
原创 区分数组指针和指针数组
数组指针和指针数组的区别: 1.指针数组 对于指针数组,他首先是一个数组; 譬如 int *p1[10]; 由于“[ ]”的优先级高,所以先于p1结合成为一个数组,再被定义成int *成为整形指针数组。它含有10个指针类型的数组元素,即每个元素的类型都是int*;在此p1[0],p1[1].....p1[n]分别是指针变量,可以用来存放地址。*p1=a表示指针数组第一个元素的值,a
2016-05-26 09:37:39 265
原创 用c语言实现strncmp,strncat,memset, memcmp
1.int strncmp ( char * str1, char * str2, size_t num)用法:#include 功能: 比较字符串str1和str2的前n个字符.返回结果:如果前n字节完全相等,返回值就=0;在前n字节比较过程中,如果出现str1[n]与str2[n]不等,则返回(str1[n]-str2[n])#include#include#includeint
2016-05-26 09:37:36 282
原创 用c语言.模拟实现strcpy,strcat,strcat,memcpy,memmove
1.模拟实现strcpy#include#include#include#includechar *my_strcpy(char *dst, const char *src){ assert(dst != NULL); assert(src != NULL); char *ret = dst; while ((*dst++ = *src++) != '\0') ; ret
2016-05-26 09:37:33 230
原创 直接插入排序
直接插入排序(straight insertion sort)的做法是:每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从后向前扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。直接插入排序属于稳定的排序,最坏时间复杂性为O(n^
2016-05-26 09:37:30 311
转载 堆排序
堆排序(Heap Sort)是由J.Williams在1964年提出的,它是在选择排序的基础上发展起来的,比选择排序的效率要高,因此也可以说堆排序是选择排序的升级版。堆排序除了是一种排序方法外,还涉及到方法之外的一些概念:堆和完全二叉树。这里主要说说什么是堆? 如果将堆看成一棵完全二叉树,则这棵完全二叉树中的每个非叶子节点的值均不大于(或不小于)其左、右孩子节点的值。由此可知,若一棵完全二叉树是
2016-05-26 09:37:27 221
转载 快速排序
冒泡排序在扫描过程中只对相邻的两个元素进行比较,因此在互换两个相邻元素时只能消除一个逆序。如果通过两个不相邻元素的交换能够消除待排序记录中的多个逆序,则会大大加快排序的速度。快速排序(Quick Sort)正是通过不相邻元素交换而消除多个逆序的,因而可以认为其是冒泡排序的升级版。650) this.width=650;" src="http://images.cnitblog.com/blog/9
2016-05-26 09:37:24 326
原创 调整数组使奇数全部都位于偶数前面。
#include#includevoid ReorderOddEven(int arry[], int size){ assert(arry); if (arry == NULL || size <= 0) { return; } int begin = 0; int temp = 0; int end = size - 1; while (begin<end) {
2016-05-26 09:37:22 297
转载 c语言表白!!!!(ps 偶然看到的)
#include#include#includeint main(){char str[3];int flag=1;flag:printf("Do you love me?\n");scanf("%s",str);if(strcmp(str,"no")!=0&&strcmp(str,"NO")!=0){ printf("请重新输入!!!\n"); goto flag;
2016-05-26 09:37:16 9523 1
原创 二维数组中的查找,杨氏矩阵
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/75/7A/wKiom1Y54wijHQMyAABkSe1XBb8649.jpg" title="QQ图片20151104184945.png" alt="wKiom1Y54wijHQMyAABkSe1XBb8649.jpg" />#include#includeint find
2016-05-26 09:37:13 263
原创 .每瓶汽水1元,两个空瓶可以置换一瓶汽水,现在有20元,最多能喝多少瓶汽水
#includeint main(){ int n = 20; int count = 20; int m; m = n / 1; while (m) { m = m / 2; if (m == 5) { count += m; m = m / 2; count += m; if (m == 2) { m = m / 2;
2016-05-26 09:37:07 881
原创 对sizeof的各种总结
数组型(二维)#includeint main(){int a[3][4] = {0};printf("%d\n",sizeof(a)); printf("%d\n",sizeof(a[0][0]));printf("%d\n",sizeof(a[0]));printf("%d\n",sizeof(a[0]+1));printf("%d\n",sizeof(a+1));printf("%d\n"
2016-05-26 09:37:04 257
转载 编写一个函数itob(int n,char s[], int b),将整数n转换为以b进制的数。保存到s中。
#include #include void itob(int n, char s[], int b);void new_reverse(char s[]);int main(void){ char buffer[10]; int iTmp, radix, flag; while (1) { printf("Please input a int number(q to
2016-05-26 09:37:01 718
转载 C语言itoa()函数和atoi()函数详解
C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。1.int/float to string/array:C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串,下面列举了各函数的方法及其说明。● itoa():将整型值转换为字符串。● ltoa():将长整型值转换为字符串。● ultoa():将无符号长整型值转换为字符串。●
2016-05-26 09:36:59 303
原创 实现一个函数int my_atoi(char s[]),可以将一个字符串转换为对应的整数。
比如:输入字符串“1234”,返回数字1234。 输入字符串“+1234”,返回数字1234. 输入字符串“-1234”,返回数字-1234.#includeint main(){ int n; int my_atoi(char s[10]); char str[10]; gets(str); n = my_atoi(str); printf("%d
2016-05-26 09:36:56 1011
转载 面试题
一个猴子身带100个香蕉,他距离家50米。这个猴子要带香蕉回去,但是他一次最多只能背50个香蕉,而且,每走一米他就要吃掉一个香蕉(往 回走也要吃香蕉)。这个猴子最后最多可以带多少个香蕉到家?30251816选D解析:猴子每往家走1米就停下来做一个判断: a、将香蕉放下,回头去拿之前没能带走的香蕉; b、继续往家的方向走;那么猴子做选择的依据是:返回拿之前没能带走的香蕉所获得的收益必须大
2016-05-26 09:36:53 306
原创 c语言 验证所有的花括号都正确的成对出现。
#includeint main(){ int i,j=0; char s[100]; printf("输入字符:"); scanf("%s",&s); for(i=0;s[i];i++) { if(s[i]=='}') { if(j==0) { printf("匹配不成功");return 0;} else j++; }
2016-05-26 09:36:47 569
转载 一直接收键盘字符,小写字符就输出对应的大写,大写字符输出对应的小写字符是数字不输出
#includeint main(){ char c[]={0}; int i; for(i=0;;i++) { c[i]=getchar(); if('A'<=c[i]&&c[i]<='Z') { putchar(c[i]+=32); continue; } if('a'<=c[i]&&c[i]<='z') { putchar(c[i]-=32);
2016-05-26 09:36:42 558
原创 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列
#includeint main(){int i,j,b,size; char a[100];printf("请输入一个数:");scanf("%d",&b);size=16;j=15;for(i=0;i<size;i++){{ if((b>>j)&1)a[size-1-j]='1';elsea[size-1-j]='0'; }j--;}printf("输
2016-05-26 09:36:39 383
原创 输入一个字符统计其中有多少个单词。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/73/C5/wKiom1YGhejBYfCLAABLBpYJ91w360.jpg" title="QQ图片20150926194557.png" alt="wKiom1YGhejBYfCLAABLBpYJ91w360.jpg" />#includeint main(){ char s
2016-05-26 09:36:36 836
原创 将一个二维数组的行和列的元素互换,存到另一个二维数组中。
#includeint main(){ int a[][3]={{1,2,3},{4,5,6},{6,9,7}}; int b[3][3],i,j; printf("array a:\n"); for(i=0;i<=2;i++) //处理数组中的一行中的各元素 { for(j=0;j<=2;j++) //处理a中的某一列的元素
2016-05-26 09:36:33 1959
原创 写一个函数返回参数二进制中 1 的个数
1.#includeint bit_count(unsigned int n){ int count; for(count = 0; n; n=n &(n - 1)) { count++; } return count;}int main(){ int k; int num;printf("输入一个数:"); scanf("%d",&nu
2016-05-26 09:36:30 295
原创 9*9乘法表中for循环中遇到的一点问题
代码如下;#include int main(){ int x,y; for(x=1;x { for(y=1;y printf("%d*%d=%d,",x,y,x*y); printf("\n"); } }650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/73/7F/wKio
2016-05-26 09:36:27 396
原创 c语言编程:输入一个数看它是不是素数
素数是指除了1和该数本身之外,不能被其他任何整数整除的数。判断输入的一个数n是不是素数的方法是:将n作为被除数,将2—n-1各个整数先后作为除数,如果都不能被整除,则n为素数。算法思路:A:输入n的值。B:i=2(i作为除数)C:n被i除,得余数rD:如果r=0,表示n能被i整除,则输出n“不是素数”算法结束;否则执行E;E:i+1=iF:如果i
2016-05-26 09:36:25 1858
原创 用c语言编写打印出100~200 之间的素数。
运行代码:#include#includeint main(){ int a; int b; int n=0; for (a=100;a {for (b=2;b{if (a%b==0)break; //若a能整除b,则执行break操作,即不执行下面的if操作返回 // 上面的那个for循环。if (b==a-1){ printf
2016-05-26 09:36:22 726
c++ rabbitmq, vs2005编译通过 SimpleAmqpClient
2018-04-10
rabbitmq的使用、 SimpleAmqpClient编译 有写好的程序
2018-04-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人