//冒泡排序(升序)
//自定义函数部分,要求函数完成冒泡排序算法
void bubble_sort(int arr[],int sz){//将数组和数组长度两个参数进行传递,方便后续使用
int a=0;
int b=0;
int tmp=0;
for(a=0;a<sz-1;a++){//定义外层循环,由数学知识可得出循环次数为数组长度-1,外层循环即最多需要做数组长度-1次冒泡排序
int flag=1;//优化程序,假设数组已经不需要排序
//内层循环,即冒泡排序具体该做的事就是从第一位开始和相邻位作比较,如果该数字大于相邻数字,两个数字调换
for(b=0;b<sz-1-a;b++){//重复进行该动作直到该数字右边没有比它大的数字即完成一次冒泡排序算法
if(arr[b]>arr[b+1]){//一次冒泡排序算法的具体实现,判定条件以及操作方法,当右边已经大于左边数据,则不进行判定,进行下一次冒泡排序
//这里还需要注意范围问题,由于最开始的数被排序完毕,所以以后每次的冒泡排序的数字的数量在不断减少,注意控制范围
tmp=arr[b];
arr[b]=arr[b+1];
arr[b+1]=tmp;
flag=0;//程序运行过程发现数据不完全有序,所以该程序不能停止,得继续下一次冒泡排序,当程序运行不到此处说明跳出循环
}
}
if(flag==1)//数组排序已经完成,判定条件成立直接“break”
break;
}
}
}
#include<stdio.h>
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]);//输出结果
}
return 0;
}
C语言基础 冒泡排序(升序)
最新推荐文章于 2025-01-04 12:05:45 发布