冒泡算法思想就是两两对比,如果前面的比后面大(由小到大),则交换位置,这样一轮循环下来,大的数总是在最右边,需要两重循环来不断重复这个过程。基本算法如上面 ztf_090930 所示,不过有一点改进的地方,就是在一次里面的循环过程中,如果没有发生任何交换,则表明当前数组已经有序了,这时候可以直接返回,这样可以大大提高冒泡算法的效率。
至于循环的过程是怎样的,自己上机调试跟踪一下程序的运行过程就知道了
改进算法如下:
Public void Maopao(out int [] items)
{
bool flag; //设一个标志
For(int i=0;i
flag = false;
For(int j=0;j
if(items[j]>items[j+1])
{
Int temp=items[j];
Items[j]=items[j+1];
Items[j+1]=temp;
flag = true; //标志设为true
}
}
if(flag == false) return; //没发生交换,表明当前已经有序,直接返回
}
}
1.71、11、4、67、39 因为N(个数)=5 所以嵌套循环5次,内分别是4+3+2+1=
10次
第二组也一样
比较次数只与N有关
2.给别人回答问题得分
冒泡排序是一非常经典排序方法
冒泡排序有一句俗语就是 外层循环条件 n-1 内层循环n-1-i
int[] ary= {71、11、4、67、39};
for(int i=0;i
for(int j=0;i
if(ary[j]>ary[j+1]) //如果大于后一个数字
{
int temp=ary[j}
ary[j]=ary[j+1]; //两者进行交换
ary[j+1]=temp;
}
}
}
至于循环了多次 你可以入一个变量在循环里 就可以知道了
希望可以帮到你
这个题我直接写 不知道语法有没有错 见谅 .
Public void Maopao(int [] items)
{
For(int i=0;i
For(int j=0;j
if(items[j]>items[j+1])
{
Int temp=items[j];
Items[j]=items[j+1];
Items[j+1]=temp;
}
}
}
}