使用指针冒泡排序
为了同数组冒泡排序进行区别,所以我们要用全指针实现冒泡排序
在一般的冒泡排序中
- 第一层for循环
规定要进行的趟数,循环条件为t<数组长度-1
- 第二层循环
从第一个元素开始进行相邻元素的交换,直到交换到上次已经交换结束的元素数,通过i<数组长度-1-t
来决定每趟中要交换的次数
通过指针冒泡排序
如果指针也按照上述的方法来进行交换,那么会额外设置变量,繁琐之余并不能体现指针的实现冒泡排序的特点,所以我们只须通过指针来限定循环的趟数和每趟交换的次数
- 第一层for循环
得到数组的首元素地址arr
以后,创建指针代表每次需要比较的最后一个变量end
=arr+数组长度-1
,用循环条件arr<end
;end--
来决定趟数。 - 第二层for循环
因为每趟开始都需要从第一个元素开始判断,所以定义一个cur
指针变量,循环条件cur<end
来决定每趟交换的次数
代码实现
void bubble_sort(int *arr, int sz)
{
int *str = arr;//
int *end = arr + sz - 1;//定义末端元素的位置
int *cur = arr;//表示当前交换的元素
for (str = arr; str < end; end--)//确定要交换的次数,通过end的缩小
{
for (cur = str; cur < end; cur++)//每次循环重新开始的时候,在初始化部分将cur重置成str
{
if (*cur > *(cur + 1))
{
int tmp = *cur;
*cur =