功能: 选择排序
输入: 数组名称(也就是数组首地址), 数组中元素个数
算法思想简单描述: 在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止.
功能: 直接插入排序
输入: 数组名称(也就是数组首地址), 数组中元素个数
算法思想简单描述: 在要排序的一组数中,假设前面(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
每遇到一个指针, 都要问问: 这个指针的类型是什么? 指针指的类型是什么? 指针指向了哪里?
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) 后进先出.
1) 要程序员用malloc()来申请, 用完后要手动清除. 2) 存取是随意的.
栈 (Stack)
1) 系统自动分配的.程序结束后,系统自动释放. 2) 后进先出.
订阅:
博文 (Atom)