#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 tem = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tem;
}
}
}
}
int main()
{
int arr[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
int sz = sizeof(arr) / sizeof(arr[0]);
int i = 0;
//对arr进行排序,排成升序
//arr是数组,我们对数组arr进行传参,实际上传递过去的是数组arr首元素的地址&arr[0]
bubble_sort(arr,sz);//冒泡排序函数
for (i = 0; i < sz;i++)
{
printf("%d ",arr[i]);
}
return 0;
}
因为当你排列的数组,不需要再排列数时,此程序仍然需要进行比较,所以进行代码改进:
这个代码的关键在于flag参数的设置,以及位置,需细细思考。
#include<stdio.h>
void bubble_sort(int arr[], int sz)
{
//确定冒泡排序的趟数
int i = 0;
for (i = 0; i < sz - 1; i++)
{
int flag = 1;//假设这一趟要排序的数据已经有序
//每一趟冒泡排序
int j = 0;
for (j = 0; j < sz - 1 - i; j++)
{
if (arr[j]>arr[j + 1])
{
int tem = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tem;
flag = 0;//本趟数据不完全有序
}
}
if (flag == 1)