对数组arr[]={9,8,7,6,5,4,3,2,1,0}进行升序排序
冒泡排序法
#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数组进行传参,实际传过去的是数组arr的首元素地址&arr[0]
//冒泡排序函数
bubble_sort(arr, sz);
for (i = 0; i <= 9; i++)
{
printf("%d\t", arr[i]);
}
return 0;
}
***优化冒泡排序
#include<stdio.h>
void bubble_sort(int arr[], int sz)
{
int i = 0;
for (i = 0; i < sz - 1; i++)
{ //flag等于1是证明数列已经有序不用再排列了
int flag = 1;
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;
//本次排列不完全有序
flag = 0;
}
}
if (flag==1)
{ break; }
}
}
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数组进行传参,实际传过去的是数组arr的首元素地址&arr[0]
//冒泡排序函数
bubble_sort(arr, sz);
for (i = 0; i <= 9; i++)
{
printf("%d\t", arr[i]);
}
return 0;
}
后加入的flag是为了在数列本来就是有序数列时直接跳出,不一直进行到最后