黑马程序员技术交流社区

标题: C#之冒泡求解惑? [打印本页]

作者: 面朝大海,春暖    时间: 2013-10-4 21:16
标题: C#之冒泡求解惑?
本帖最后由 面朝大海,春暖 于 2013-10-5 14:28 编辑

如下代码:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;

  5. namespace ConsoleApplication1
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             int[] num=new int[6];
  12.             int temp;
  13.             for (int i = 0; i < num.Length;i++ )
  14.             num[i] = int.Parse(Console.ReadLine());
  15. <font color="#ff0000">            for (int j = 0; j < num.Length - 1; j++)</font>
  16.             {
  17. <font color="#ff0000">                for (int i = 0; i < num.Length - 1-j; i++)</font>
  18.                 {
  19.                     if (num[i] < num[i + 1])
  20.                     {
  21.                         temp = num[i];
  22.                         num[i] = num[i + 1];
  23.                         num[i + 1] = temp;
  24.                     }
  25.                 }
  26.             }

  27.             for (int i = 0; i < num.Length; i++)
  28.                 Console.WriteLine(num[i]);
  29.             Console.ReadKey();
  30.         }
  31.     }
  32. }
复制代码
上述代码是降序,经过比较,如果num<num[i+1],则将num与num[i+1]交换位置,直到所有元素比较完毕排序完成。但我有点不理解外循环是怎意思,还有就是内循环和外循环执行顺序是什么。求解惑。

作者: lgh521911    时间: 2013-10-4 21:48
for循环的嵌套,内循环在执行第一次循环判断至内循环的时候,会在内循环中循环,此时,内循环循环判断是否为true是,会一直循环,不会执行外层循环,直到内层循环判断为false,跳出内层循环,才会继续执行外层循环,而第二次执行外层循环的时候,会第二次运行内层循环,以此罔替,直到外层循环为FALSE,才跳出循环,循环结束。视频中的例子:
  1.   int k = 0;
  2.             for (int i = 0; i < 10; i++)
  3.             {
  4.                 for (int j = 0; j < 4; j++)
  5.                 {
  6.                     Console.WriteLine("我爱你"+ ++k);
  7.                 }
  8.             }
  9.             Console.ReadKey();
复制代码
设置下断点,再好好理解下,这里没什么难度,视频25和26再看看
作者: 何红卫    时间: 2013-10-5 00:28
你要先理解冒泡的过程,冒泡的思想,至于实现的算法千变万化,其实并不那么重要。
冒泡总共要做多少次排序,由外循环控制,每次排序做了多少次移位,由内循环控制。
当你弄懂了它的思想,可以尝试思考怎么做优化,比如做降序,如果数字原本就已经是降序了,怎么优化等等。
作者: 面朝大海,春暖    时间: 2013-10-5 14:27
谢谢!………………………………………………………………………………




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2