今天学习了第四种排序方法---快速排序,同时介绍了用指针操作以为字符型数组,指针与函数,以及指针与二维数组:
一、快速排序
快速排序是一种综合了指针,函数,以及递归的排序方法,它的 时间复杂度为nlogn,相比与前面学习的排序,是一种非常优秀的排序方法,以下是快速排序的基本思路:
1.定义一个基准值,一般选择数组的第一个数为基准值
2.从右边开始找比基准值小的数。
3.从左边开始找比基准值大的数。
4.交换找到的两个数
5.重复2-4的步骤,直到begin与end指针相遇
6.此时将相遇位置的值与基准值进行交换。
7.此时数组被基准值分为左右两部分,最后再对这两部分进行快速排序
以下是代码实现:
二、指针去操作一维字符型数组
主要学习了如何用指针去编写操作字符串的一些函数:
gets
puts
strlen
strcpy /strncpy
strcat /strncat
strcmp /strncmp
三、指针与函数
要注意以下两个概念:
函数指针 : 函数类型的 指针
指针函数 : 返回值为指针类型 的函数
四、指针与二维数组
要了解指针与二维数组的关系,首先得知道二维数组的本质。二维数组的本质还是一维数组
int a[3][4]; //本质还是一维数组
int[4] a[3]; //理解角度
//a --数组名 --代表类型 int [3][4]
//a --代表的值 -- 首元素的地址 -- a[0]
//a[0] 的数据类型 int[4]
//&a[0]--对应的数据类型 int(*)[4] //数组类型 (一维整型数组类型)
//数组类型的指针 --- 数组指针