方便回忆:
冒泡排序法是先排序好最大的那个数字在数组最后面,再排倒数第二大的数字。。。以此类推。
void
Bubble_Sort(
int
*num,
int
n)
{
int
i, j;
for
(i = 0; i < n; i++) //1
{
for
(j = 0; i + j < n - 1; j++) //2
{
if
(num[j] > num[j + 1]) //3
{
int
temp = num[j];
num[j] = num[j + 1];
num[j + 1] = temp;
}
}
}
return
;
}
n是要排序的数字个数
以87, 12, 56, 45, 78这五个数字为例:
n=5
当i=0,j=0时,对比第一个(num[0])和第二个数字(num[1]),把大的排到后面。 (//3处) 12,87,56,45,78
然后j自加1,对比第二个(num[1])和第三个数字(num[2]) 12,56,87,45,78
j继续自加,以此类推 12,56,45,87,78
.。。 12,56,45,78,87
接下来i自加1,j重新回到0,即 //1 处开启第二轮循环。那么i自加1的意义,可以从 //2处的i+j<n-1 条件看出,相当于不对比数组最后一个数,为什么呢?因为在i=0的时候就已经把最大的数排序到数组最后了(num[4]),已经没必要将这个数字再进行对比
整个流程就相当于把最大的数字一一排序到数组最后,就像冒泡一样。