冒泡算法的一个描述过程,自己想加深下理解
#include <stdio.h>void MaoPao(int* arr,int n)
for(int side = n-1;side > 0;--side) /*side 控制内循环 冒泡的一个过程:我来列举一下几个数的排序过程
{
for(int m = 0;m < side;++m) 有六个数: 1 2 3 4 5 6 所以我们控制内循环的话在这里就是side=6-1,因为内循环是从0开始的嘛,也就是5次循环
{
if(arr[m]<=arr[m+1]) 第一次循环: 2 1 第1次内循环1与2比较
{ 第二次循环: 3 1 第2次内循环1与3比较
int t = arr[m+1]; 第三次循环: 4 1 第3次内循环1与4比较
arr[m+1] = arr[m]; 第四次循环: 5 1 第4次内循环1与5比较
arr[m] = t; 第五次循环: 6 1 第5次内循环1与6比较
所以结果为: 2 3 4 5 6 1 此时把1排到了最后面
}
} 外循环side=4时
} 第一次循环: 3 2 第1次内循环2与3比较
}
第一次循环: 4 2 第2次内循环2与4比较
void main() .
{ .
int array[6]; .
printf("请输入数组元素:\n"); 经过4次内循环后: 3 4 5 6 2 1
for(int i = 0;i <6 ;++i) 反复经过5次控制内循环后,如同上面,最后的到
{
scanf("%d",&array[i]); 经过最后1次内循环后即为: 6 5 4 3 2 1 即完成了从大到小的排序
}
printf("你输入的元素为:\n");
for(i = 0;i < 6;++i)
{
printf("%d\n",array[i]);
}
MaoPao(array,6);
printf("排序后得:");
for(i = 0;i < 6;++i)
{
printf("%d",array[i]);
}
}
[ 本帖最后由 wewoor 于 2011-2-27 17:36 编辑 ]