冒泡排序的算法,对一组数字,进行排序从小到大,排序。第一个元素两两比较
如arr 9 8 7 6 5 4 3 2 1
先对第一个数进行排序。9和8比,比8大交换。按照这样的原理,把他交换到最大的后面没有比他的数之后,不再交换。所有的全部排好序需要的趟数,是总数组元素个数减一,因为当他前面的个数都排序好之后,剩下的那个默认已经是最小的了。
第一躺排序号之后就只有,因为最后一个已经排好了。多余需要和总个数-1-已经拍好的个数来比较
实例代码如下:
//冒泡排序算法
void bool_strlrn(int*arr,int sz)
{
int i = 0;
for (i = 0; i < sz-1; i++)//需要排序的趟数,如9个数排好8个数之后就
{
int j = 0;
for (j = 0; j < sz - 1 - i; j++)//一趟,对于每一趟进行排序,一个数和除他以外的数进行比较。然而每次排序的时候减去已经排好序的和没有排好序的比较所有-i。i是已经排好序的歌
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j+ 1] = temp;
}
}
}
}
int main()
{
int arr[9] = {0};
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);
for (i = 0; i < sz; i++)
scanf("%d", &arr[i]);
bool_strlrn(arr, sz);
for (i = 0; i < 9; i++)
{
printf("%d ", arr[i]);
}
return 0;
}