
c语言之美
文章平均质量分 68
cqkxboy168
这个作者很懒,什么都没留下…
展开
-
各种排序算法思想及比较
一、插入排序(Insertion Sort)1. 基本思想: 每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适当位置,使数列依然有序;直到待排序数据元素全部插入完为止。2. 排序过程: 【示例】:[初始关键字] [49] 38 65 97 76 13 27 49 J=2(38) [38 49] 65 97 76 13 27 49 J=3(65转载 2013-03-15 20:20:42 · 761 阅读 · 0 评论 -
关于原码,反码,补码和左右移位的若干思考
精心总结原创 2014-08-16 15:25:27 · 7412 阅读 · 0 评论 -
static在c语言中的作用
C程序一直由下列部分组成: 1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令; 2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。 3)非初始化数据段(bss段)——在程序中没有初始化的全局变量;内核将此段初始化为0。 4)栈——增长方向:自顶向下增长;自动变量以原创 2013-07-04 20:29:28 · 810 阅读 · 0 评论 -
汇编里寄存器的作用
ebp和esp是32位的SP,BP esp是堆栈指针 ebp是基址指针 ESP与SP的关系就象AX与AL,AH的关系.32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EF原创 2013-05-30 14:02:27 · 887 阅读 · 0 评论 -
vc中内存对齐
#includetypedef struct MyStruct { double dda1; char dda; int type;}MyStruct; typedef struct MyStruct2{ char dda; double dda1; int type;}MyStruct2;void main(){ printf("%d,%d\n",sizeof(M原创 2013-05-27 17:18:07 · 798 阅读 · 0 评论 -
OXFeeeFeee指针的含义
测试时,遇到程序崩溃 调试时,发现崩溃处的某指针值为0xfeeefeee,此值的含义为: 此指针指向的位置已经被释放了, 但释放后,又错误的重新调用了这个无效指针。 经检查,错误之处为:[cpp] view plaincopyTB_Chosen->ReleaseAll(); delete TB_Chos转载 2013-05-05 18:57:40 · 987 阅读 · 0 评论 -
c语言有趣的位运算
一、小技巧1.与特殊数与&(1,0xAAAA,0x5555等) 应用:1.判断奇偶 2.见后面有趣应用2.异或的技巧 本身异或为0,与0异或为本身,满足交换律。应用:不借助第三个数交换两数,有趣应用4void Swap(int &a, int &b){ if (a != b) { a ^= b; b ^= a; a ^= b; }}可以这样理解:第一步 a^原创 2013-04-17 22:31:17 · 1449 阅读 · 1 评论 -
理解递归操作
1.先来看看一个经典的问题,汉诺塔问题汉诺塔问题:大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。#include void move(char c1,char c2){ printf("%c-->原创 2013-04-12 22:56:42 · 542 阅读 · 0 评论 -
排序算法四之归并算法
参考http://blog.youkuaiyun.com/morewindows/article/details/6678165原理:将两个有序的数组进行合并;进一步,如果把一个数组先分成两个A,B,再将A分成2个A1,A2,再将A1分成2个。。。。,直到这个小组只有1个元素,此时可以认为这个只有1个元素的数组是有序的,可以进行两个有序数组的合并操作。先通过递归的分解数组,再合并数组就完成了归并操作。原创 2013-04-12 22:10:36 · 685 阅读 · 0 评论 -
今天才搞清楚排序算法的O(N*logN)是什么意思
以前光看了n多排序算法,知道仅通过比较的排序算法一共两种复杂度O(N2)或O(N*lgN),由于高数学的不好,之前一看到后者就放弃了思考,没有真正研究为什么会有个lgN,这两天工作不是很忙,看了一下基础知识,有了一定的认识,算是初步搞清楚了原因.写在这里算是一个记录,如果有问题也请大家指正. 说到N*lgN的算法大致上有几种:堆排序,归并排序,快速排序.由于学习数转载 2013-04-12 17:33:11 · 2638 阅读 · 1 评论 -
排序算法三之快速排序
参考http://blog.youkuaiyun.com/morewindows/article/details/66845581.原理::通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。#include #define N 5/*快速排序1原创 2013-04-12 16:23:00 · 614 阅读 · 0 评论 -
排序算法二之插入排序
参考http://blog.youkuaiyun.com/morewindows/article/details/6665714基本思想:将一个待排序的数插到前面已经排好的队列中,初始的时候a[0]是一个排好的队列。#include #define N 5void swap(int *a,int *b){ int temp; temp=*b; *b=*a; *a=temp;}/*原创 2013-04-10 19:19:43 · 716 阅读 · 0 评论 -
排序算法一之冒泡排序
参考http://blog.youkuaiyun.com/morewindows/article/details/6657829冒泡排序的思想:就是每进行一趟比较,把待排序数中最大的选出来;换言之,第一趟把最大的选出来,第二趟把第二大的选出来,。。。。#include void swap(int *a,int *b){ int temp; temp=*b; *b=*a; *a=temp原创 2013-04-10 15:49:03 · 556 阅读 · 0 评论 -
expression cannot be evaluated
编译时正常,运行时却报错,调试器给的错误信息是expression_r cannot be uated,调试器里显示变量的地址通常是0×000000或者是0xCCCCCC。出现这样的错误一般是由于对变量的初始化不正确或者根本就还没有初始化就直接引用变量。只要在对变量进行引用前确保变量已经正确初始化就可以避免此类错误。另外结构体指针变量在赋值之前要先用malloc()分配一个内存空间。或者是指针转载 2013-04-08 19:07:11 · 2094 阅读 · 0 评论 -
各种排序算法的实现及其比较(c++实现)
排序算法是笔试和面试中最喜欢考到的内容,今晚花了好几个小时的时间把之前接触过的排序算法都重新实现了一遍。 主要是作为复习用。当然也希望能够给大家帮上点忙。对各种排序算法比较熟悉的朋友可以直接跳过。 常用的内部排序算法主要分为五类:插入、交换、选择、归并、基数排序。文章的最后可能还会稍微分析一下外部排序。。。内/外部排序的区别就是 外部排序指的是大文件的排序,即待排序的记录存转载 2013-03-15 20:31:13 · 1522 阅读 · 1 评论 -
字符串处理易错点
一.知识点1.字符指针和字符数组(1)字符指针,是个变量,存放的是地址而已。是个指针,如只定义,则指针指向不可用的地址 ,不能乱用,则指针没指向任何地址,赋值后用来指向一个字符串。所以用时必须malloc(2)字符数组,定义是系统就为其分配了数组大小的区域。字符串定义时可以为数组中的每个元素赋值。2.字符可以通过ascii码进行算法运算例:字符转换为数字函数原创 2014-10-26 00:48:32 · 820 阅读 · 0 评论