黑马程序员技术交流社区
标题:
C#之冒泡求解惑?
[打印本页]
作者:
面朝大海,春暖
时间:
2013-10-4 21:16
标题:
C#之冒泡求解惑?
本帖最后由 面朝大海,春暖 于 2013-10-5 14:28 编辑
如下代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int[] num=new int[6];
int temp;
for (int i = 0; i < num.Length;i++ )
num[i] = int.Parse(Console.ReadLine());
<font color="#ff0000"> for (int j = 0; j < num.Length - 1; j++)</font>
{
<font color="#ff0000"> for (int i = 0; i < num.Length - 1-j; i++)</font>
{
if (num[i] < num[i + 1])
{
temp = num[i];
num[i] = num[i + 1];
num[i + 1] = temp;
}
}
}
for (int i = 0; i < num.Length; i++)
Console.WriteLine(num[i]);
Console.ReadKey();
}
}
}
复制代码
上述代码是降序,经过比较,如果num
<num[i+1],则将num
与num[i+1]交换位置,直到所有元素比较完毕排序完成。但我有点不理解外循环是怎意思,还有就是内循环和外循环执行顺序是什么。求解惑。
作者:
lgh521911
时间:
2013-10-4 21:48
for循环的嵌套,内循环在执行第一次循环判断至内循环的时候,会在内循环中循环,此时,内循环循环判断是否为true是,会一直循环,不会执行外层循环,直到内层循环判断为false,跳出内层循环,才会继续执行外层循环,而第二次执行外层循环的时候,会第二次运行内层循环,以此罔替,直到外层循环为FALSE,才跳出循环,循环结束。视频中的例子:
int k = 0;
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 4; j++)
{
Console.WriteLine("我爱你"+ ++k);
}
}
Console.ReadKey();
复制代码
设置下断点,再好好理解下,这里没什么难度,视频25和26再看看
作者:
何红卫
时间:
2013-10-5 00:28
你要先理解冒泡的过程,冒泡的思想,至于实现的算法千变万化,其实并不那么重要。
冒泡总共要做多少次排序,由外循环控制,每次排序做了多少次移位,由内循环控制。
当你弄懂了它的思想,可以尝试思考怎么做优化,比如做降序,如果数字原本就已经是降序了,怎么优化等等。
作者:
面朝大海,春暖
时间:
2013-10-5 14:27
谢谢!………………………………………………………………………………
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2