一、冒泡排序是什么?
示例:
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
二、冒泡函数原理
代码如下(示例):
2.编写冒泡排序函数
代码如下(示例):
#include<stdio.h>
void bubble_sort(int arr[],int sz)
{
//确定冒泡排序的趟数
int i = 0;
int j = 0;
for(i=0;i<sz-1;i++)
{
//每一趟冒泡排序
int flag = 1;\\设置flag值为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;
flag = 0;//没有排序好flag值发生改变
}
}
if(flag == 1){\\当一趟下来发现flag还是1
//就说明数组已经是排序过的了,不需要后续排序了。
break;
}
}
}
int main(){
int arr[] = {9,8,7,6,5,4,3,2,1};
int x=0;
int sz = sizeof(arr)/sizeof(arr[0]);
bubble_sort(arr,sz);
//循环打印
for(x=0;x<sz;x++){
printf("%d \n",arr[x]);
}
return 0 ;
}
总结
提示:
数组的数组名是指向第一个元素的指针
虽然说传进去就一个k[0]的地址但是数组地址是连续的,有了k[0]地址就可以找到K[1]地址,k[2]地址,k[3]地址通过地址改变数组里面的元素值