C#冒泡排序这几句是什么意思//开始冒泡排序for (i = 0; i < xue.Length-1; i++) ///

C#冒泡排序这几句是什么意思
//开始冒泡排序
for (i = 0; i < xue.Length-1; i++) ///这一步为什么要减1啊 不减1也可以啊
{
//将最大的值传递到最后s
for (j = 0; j < xue.Length-1-i; j++) ////长度减1减i是什么意思啊 为什么要加-1和-j
{
if (xue[j] > xue[j + 1])
{
temp = xue[j];
xue[j] = xue[j + 1];
xue[j + 1] = temp;
}
}
}
Console.WriteLine("排序后的输出为:");
for ( i = 0; i < 5;i++ )
{
Console.WriteLine("{0}",xue[i]);
}
河南人怎么了 1年前 已收到1个回答 举报

allenyg 幼苗

共回答了27个问题采纳率:100% 举报

第一个for循环里的-1可以去了,但是会多循环计算一次,虽然不会影响结果
因为冒泡排序是两两交换,所以,在执行xue[j]=xue[j+1]时,如果第二个for循环的j没有-1,会超出索引报错
-i,是因为每次交换都把没有交换的字符里的最大字符的换到后面去了,所以,每次需要交换位置的字符越来越少,
不-i不影响结果,因为换到后面的都是比较过后排好序的,再计算排序结果还是不变,但是却多了没必要的循环和计算,所以-i性能会更好

1年前

2
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.280 s. - webmaster@yulucn.com