读书人

冒泡排序的疑问,该如何处理

发布时间: 2011-12-31 23:50:30 作者: rapoo

冒泡排序的疑问
http://publish.it168.com/2005/0729/20050729087601.shtml
原文如上,
其中有这样一段代码
for(j=R.Length-2; j> =i; j--)
{
//交换条件
if(R[j+1] <R[j])
{
temp=R[j+1];
R[j+1]=R[j];
R[j]=temp;
//发生了交换,故将交换标志置为真
exchange=true;
}

不理解在这里为什么要用R(j-2)来循环,
下边又用R[j+1]判断,
赋值又用到了R[j]

有点晕,谁给解释一下啊,给一个连接也成啊

[解决办法]
有好几种写法没必要死扣他的算法,知道怎么回事就行,然后自己写

[解决办法]
是呀,你不要就看他的表达方式,知道原理就行了
//
// TODO: 在此处添加代码以启动应用程序
//
int []box=new int[]{21, 23 ,64, 8 ,12 ,73, 99, 14};
int a;

//采用冒泡排序,小到大
for(int i=0;i <box.Length-1;i++)
{
for(int j=0;j <box.Length-1-i;j++)
{
if(box[j]> box[j+1])
{
a=box[j];
box[j]=box[j+1];
box[j+1]=a;
}

}

}

//output result
for(int i=0;i <box.Length;i++)
{
Console.WriteLine((i+1).ToString() + ": "+box[i].ToString());
}

[解决办法]
不理解在这里为什么要用R(j-2)来循环,
==============
因为这里

if(R[j+1] <R[j])

[解决办法]
他的是的,因他下面用的是R[j+1]R[j]比,如果你用R(j-1)来循环的,是用R[j]R[j-1]比.都是R的最後一一往前比. 你要去理解理它,而不是硬背.所以你也可以成
for(j=R.Length-3; j> =i-1; j--)
{
//交换条件
if(R[j+2] <R[j+1])
{
temp=R[j+2];
R[j+2]=R[j+1];
R[j+1]=temp;
//发生了交换,故将交换标志置为真
exchange=true;
}
也是一的.

读书人网 >C#

热点推荐