直入主题
#include <stdio.h>
int main()
{
int arr[] = { 1,5,3,7,8,4,9 };//排序——升序
bubble_sort(&arr);//冒泡排序,参数为整个数组的地址
int i = 0;
for (i = 0; i < 7; i++)
{
printf("%d", arr[i]);
}
return 0;
}
void bubble_sort(int arr[])//接收地址的形参应该是指针,int*arr[],这里传的数组,数组也可.
{
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);//元素个数
for (i = 0; i < sz - 1; i++)
{
int j = 0;
for (j = 0; j < sz - 1 - i;j++)
{
if (arr[j] > arr[j + 1])
{
int tmp = 0;
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
1.数组为参数的调用注意要调用整个数组的&+数组名
2.冒泡排序是相邻两个数的排序,如图是一趟冒泡排序,数组元素个数为7的一趟冒泡排序会比较6次,同时会确定一个数的位置,下一趟冒泡排序就只需要比较6个数,即下一趟冒泡排序会比较5次,再次确定一个数的位置,依次递减。
3.接受数组地址的形参可以用指针表示,也可以用数组表示