实现一个对整形数组的冒泡排序
(遍历数组,对数组中相邻的两个元素进行比较,如果需要升序,前一个数据大于后一个数据时,交换两个位置上的数据,直到所有的数据比较完,此时,最大的数据已经放在数组的末尾。
除最大数据已经排好序外,其余数据还是无需,对剩余数据采用与上述类似的方式进行处理即可。)
冒泡排序的思想
一趟冒泡排序能搞定一个数字的位置,让当前待排序数组中一个元素来到最终应该出现的位置上。
如果整型数组有有n个数字,则需要进行n-1趟冒泡排序。
代码
//实现一个对整形数组的冒泡排序
#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[] = { 3,1,5,2,4,9,0,7,6,8 };
int sz = sizeof(arr) / sizeof(arr[0]);
//冒泡排序
bubble_sort(arr, sz);
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", i);
}
printf("\n");
}