冒泡排序的实现及其注意事项(C语言)
源码的实现
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//冒泡排序
#include<stdio.h>
void bubble_sort(int arr[],int sz)
{
int i = 0;
int j = 0;
int k = 0;
int tmp = 0;
for (j = 0; j < sz - 1; j++)
{
k = 0;//此处0是假设后续排序是正确的,若不正确,则在下面的for循环中进行改值
for (i = 0; i < sz - 1; i++)
{
if (arr[i] > arr[i + 1])
{
tmp = arr[i + 1];
arr[i + 1] = arr[i];
arr[i] = tmp;
k = 1;
}
}
if (k == 0)
{
break;
}
}
printf("重新排序如下:>");
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
}
int main()
{
int arr[10] = { 9,8,7,6,5,4,3,2,1,0 };
int sz = sizeof(arr) / sizeof(arr[0]);
bubble_sort(arr, sz);
return 0;
}
数组传值的本质
数组传值并非将整个数组的值传递过去,而是将数组的第一个数值的地址传递过去。
冒泡排序的优化
假设在每一趟排序之前我们假设后面的顺序是正确的以源码中的k表示出来,若if判断后续假设为假,那么便会将k改为1,使后面的if失效,反之则会break,使这一趟的循环停止,避免浪费算力。