第一次写,不是很熟练
用函数实现数组冒泡排序,运用c语言中数组的知识
今天学习了
1、arr是数组,我们对数组arr进行传参,实际上传递过去的是数组arr首元素的地址&arr[0]
2、数组名是首元素地址,除下列两种情况之外
(1)、sizeof(数组名)---数组名表示 整个数组,sizeof(数组名)计算的是整个数组的大小,单位是字节
(2)、&数组名,数组名代表整个数组,&数组名,取出的是整个数组的地址
#include<stdio.h>
void bubble_sort(int arr[], int sz)
{
int i = 0;
//确认有几趟冒泡排序
for (i = 0; i < sz; i++)
{
int j = 0;
int flog = 1;
//确认一趟排序要对比几次(冒泡排序其实就是两两相邻元素比较)
for (j = 0; j < sz - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
flog = 0;//这趟排序其实不完全有序,需要接着排
}
}
if (flog == 1)//已经有序,跳出循环 ,提高效率
{
break;
}
}
}
int main()
{
int arr[] = { 9,8,7,6,5,4,3,2,1,0 };
int sz = sizeof(arr) / sizeof(arr[0]);//计算数组中有多少元素
int i = 0;
bubble_sort(arr, sz);//冒泡排序
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);//打印每一个元素
}
}