冒泡排序
冒泡排序的核心:
我认为冒泡的核心是双层循环。
外循环不论是用while还是for,它本质控制的都是趟数。
而内循环实现的是相邻两数之间的比较。
排升序时:
每执行一次内循环,都会有一个最大的数往后边的位置放。
内循环中要注意 j的取值,
j取1:a[j]和a[j-1]比较时,j的取值为[1,n-1](第一趟时)
代码:
void bubble_sort(int* a, int n)
{
int end = n;
while (end)
{
int j = 1;
int flag = 0;
for (; j < end; ++j)
{
if (a[j - 1] > a[j])
{
swap(a[j - 1], a[j]);
flag = 1;
}
}
if (flag == 0)
{
break;
}
--end;
}
}
flag的存在,在排有序数组时,可以提高代码的效率。