思路:第一步:先用首位数字以此向后比较 如果后一位小于前一位 则交换直至与最后一位比较完
10 9 8 7 6 5 4 3 2 1→9 10 8 7 6 5 4 3 2 1→9 8 10 7 6 5 4 3 2 1...9 8 7 6 5 4 3 2 1 10
第二步:进行第二趟排序
8 9 7 6 5 4 3 2 1 10...8 7 6 5 4 3 2 1 9 10
实现:
#include<stdio.h>
void bubble_sort(int arr[],int sz)
{
//确定冒泡排序的趟数
int i=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 = arr[j];
arr[j] = arr[j+1];
arr[j+1]=tmp;
}
}
}
}
int main()
{
int arr[]={9 8 7 6 5 4 3 2 1 0};
int i = 0;
int sz = sizeof(arr)/sizeof(arr[0]);
//对arr进行排序 升序
//arr是数组 我们对数组进行传参 实际上传过去的是数组首元素的地址&arr[0]
确定冒泡排序的趟数只能在函数外面
bubble_sort(arr,sz);
for(i=0;i<sz;i++)
{
printf("%d",arr[i]);
}
return 0;
}