编译判断条件
#ifndef ZMX
设定条件标识
#define ZMX
(1)包含标准库、链接库
(2)包含用户库
(3)函数声明
(4)变量的定义(外部变量,全局变量)
(5)宏
(6)数据结构的定义(结构体等)
(7)类型重写
等等。。。。
结束包含
#endif
C语言开发中常用的关键字:
const : const 限定一个变量不允许被改变。
const int a=12;
const int a;
a=12;
typedef :可以看作 type define,用于给已有的类型重新定义一个别名。并没有产生新的数据类型。
typedef int zmx;
define :C语言中的宏定义(宏替换),用来将一个标识符定义为一个字符串,该标识符是宏名,被定
义的字符串称为替换文本。
define有三种定义格式:
(1)简单宏定义 #define <宏名> <字符串名>
#define PI 3.14
(2)带参数的宏 #define <宏名>(参数)<宏体>
#define add(x,y)((x)+(y))
#define add(x,y)(x+y)
#define add(x,y) (x+y)
(3)条件编译 #ifdef<宏名> ... #endif
条件编译预处理命令:#ifdef, #ifndef(或#if!def), #else, #endif
文件包含: #include <>
借助条件编译预处理命令可以轻松地解决头文件被重复包含的问题
typedef关键字的作用:类型定义
typedef int zmx和#define zmx int等效
数组四大排序
冒泡排序(Bubble Sort)
冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所
以,如果两个元素相等,我想你是不会再无聊地把他们俩交换一下的;如果两个相等的元素没有相邻,那么即使通过前面
的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算
法。
1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3. 针对所有的元素重复以上的步骤,除了最后一个。
4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
选择排序(Select Sort)
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据
元素排完。选择排序是不稳定的排序方法。
插入排序(Insert Sort)
有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时
候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而
得到一个新的、个数加一的有序数据,算法适用于少量数据的排序。是稳定的排序方法。
⒈ 从第一个元素开始,该元素可以认为已经被排序
⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描
⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置
⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
⒌ 将新元素插入到下一位置中
⒍ 重复步骤2~5
快速排序(Quicksort)
是冒泡排序的改进,是不稳定的排序方法
1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;
2)以第一个数组元素作为关键数据,赋值给key,即key=A[0];
3)从j开始向前搜索,即由后开始向前搜索(j--),找到第一个小于key的值A[j],将A[j]赋给A[i];
4)从i开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的A[i],将A[i]赋给A[j];
5)重复第3、4步,直到i=j; (3,4步中,没找到符合条件的值,即3中A[j]不小于key,4中A[i]不大于key的时候改变j、i的值,使得j=j-1,i=i+1,直至找到为止。找到符合条件的值,进行交换的时候i, j指针位置不变。另外,i==j这一过程一定正好是i+或j-完成的时候,此时令循环结束)。
#ifndef ZMX
设定条件标识
#define ZMX
(1)包含标准库、链接库
(2)包含用户库
(3)函数声明
(4)变量的定义(外部变量,全局变量)
(5)宏
(6)数据结构的定义(结构体等)
(7)类型重写
等等。。。。
结束包含
#endif
C语言开发中常用的关键字:
const : const 限定一个变量不允许被改变。
const int a=12;
const int a;
a=12;
typedef :可以看作 type define,用于给已有的类型重新定义一个别名。并没有产生新的数据类型。
typedef int zmx;
define :C语言中的宏定义(宏替换),用来将一个标识符定义为一个字符串,该标识符是宏名,被定
义的字符串称为替换文本。
define有三种定义格式:
(1)简单宏定义 #define <宏名> <字符串名>
#define PI 3.14
(2)带参数的宏 #define <宏名>(参数)<宏体>
#define add(x,y)((x)+(y))
#define add(x,y)(x+y)
#define add(x,y) (x+y)
(3)条件编译 #ifdef<宏名> ... #endif
条件编译预处理命令:#ifdef, #ifndef(或#if!def), #else, #endif
文件包含: #include <>
借助条件编译预处理命令可以轻松地解决头文件被重复包含的问题
typedef关键字的作用:类型定义
typedef int zmx和#define zmx int等效
数组四大排序
冒泡排序(Bubble Sort)
冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所
以,如果两个元素相等,我想你是不会再无聊地把他们俩交换一下的;如果两个相等的元素没有相邻,那么即使通过前面
的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算
法。
1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3. 针对所有的元素重复以上的步骤,除了最后一个。
4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
选择排序(Select Sort)
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据
元素排完。选择排序是不稳定的排序方法。
插入排序(Insert Sort)
有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时
候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而
得到一个新的、个数加一的有序数据,算法适用于少量数据的排序。是稳定的排序方法。
⒈ 从第一个元素开始,该元素可以认为已经被排序
⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描
⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置
⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
⒌ 将新元素插入到下一位置中
⒍ 重复步骤2~5
快速排序(Quicksort)
是冒泡排序的改进,是不稳定的排序方法
1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;
2)以第一个数组元素作为关键数据,赋值给key,即key=A[0];
3)从j开始向前搜索,即由后开始向前搜索(j--),找到第一个小于key的值A[j],将A[j]赋给A[i];
4)从i开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的A[i],将A[i]赋给A[j];
5)重复第3、4步,直到i=j; (3,4步中,没找到符合条件的值,即3中A[j]不小于key,4中A[i]不大于key的时候改变j、i的值,使得j=j-1,i=i+1,直至找到为止。找到符合条件的值,进行交换的时候i, j指针位置不变。另外,i==j这一过程一定正好是i+或j-完成的时候,此时令循环结束)。