思想:两两相邻的元素进行比较,并且按需要发生交换。
例如,将9876543210排为升序,则先将9和8比较后,排序为897654321,以此类推,第一趟完成后结果为876543219。
每一趟排序完成后将会有本趟最大的数字到达它应该在的位置,因此之后的每一趟都可少比较一对数字。
---------------------------------------------------------------------------------------------------------------------------------代码:
#include
void bubble_sort(int arr[], int sz)//排为升序
{
int i, j;
for (i = 0; i < sz - 1; i++)//计算比较趟数
{
for (j = 0; j < sz - 1 - i; j++)//每一趟内相邻两两比较
{
if (arr[j] > arr[j + 1])
{
int temp;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main()
{
int arr[] = {9,8,7,6,5,4,3,2,1,0};
int sz;
sz = sizeof(arr) / sizeof(arr[0]);//计算数组的长度
bubble_sort(arr, sz);//传参传入的是首元素的地址,所以sz不能在bubble函数里计算
int i;
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)