C语言中的 常用排序

功能: 选择排序
输入: 数组名称(也就是数组首地址), 数组中元素个数
算法思想简单描述: 在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止.

功能: 直接插入排序
输入: 数组名称(也就是数组首地址), 数组中元素个数
算法思想简单描述: 在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的.如此反复循环,直到全部排好顺序.

功能: 冒泡排序
输入: 数组名称(也就是数组首地址), 数组中元素个数
算法思想简单描述: 在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒.即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换.

功能: 希尔排序
输入: 数组名称(也就是数组首地址), 数组中元素个数
算法思想简单描述: 先将要排序的一组数按某个增量d分成若干组,每组中记录的下标相差d.对每组中全部元素进行排序,然后再用一个较小的增量对它进行,在每组中再进行排序.当增量减到1时,整个要排序的数被分成一组,排序完成.

还有 堆排序 和 快速排序.

C语言中的 指针

指针是一个特殊的变量.指针有四个方面的内容:
1. 指针的类型
2. 指针所指向的类型
3. 指针的值,或者叫指针所指向的内存区
4. 指针本身所占据的内存区

如例子:      指针的类型  指针所指向的类型 指针的值               指针本身占据的内存区
int*p          int*               int                         sizeof(int*)=4         sizeof(int*)=4
char*p       char*           char                      sizeof(char*)=1      sizeof(char*)=4
int**p         int**             int*                        sizeof(int**)=4        sizeof(int**)=4
int(*p)[3]    int(*)[3]       int()[3]                   sizeof(int(*)[3])=12 sizeof(int(*)[3])=4

每遇到一个指针, 都要问问: 这个指针的类型是什么? 指针指的类型是什么? 指针指向了哪里?

C语言中的堆和栈的区别

堆 (Heap)
1) 要程序员用malloc()来申请, 用完后要手动清除. 2) 存取是随意的.
栈 (Stack)
1) 系统自动分配的.程序结束后,系统自动释放. 2) 后进先出.