zoukankan      html  css  js  c++  java
  • 冒泡排序--by winter

    对下列数进行由大到小的排序:  1,2,3,4,5,6

       1 2 3 4 5 6  共有N个数,n=6

       2 3 4 5 6 1  第1趟比较  这趟两两间要比较5次

       3 4 5 6 2 1  第2趟比较  这趟两两间要比较4次

       4 5 6 3 2 1  第3趟比较  这趟两两间要比较3次

       5 6 4 3 2 1  第4趟比较  这趟两两间要比较2次

       6 5 4 3 2 1  第5趟比较  这趟两两间要比较1次

      从上面可得出结论:

       1,有N个数,一共要比较n-1趟。

       2,第j趟要比较n-j次。趟数没增加一次,这趟的次数就要少比较一次。

     所以,整理得代码如下:

     1 static void Main(string[] args)
     2         {
     3             //冒泡排序算法
     4             //要点:数组个数为N,一共要比较N-1趟,每趟比较
     5             int[] number = { 1, 2, 3, 4, 5, 6, 7, 8 };
     6             for (int i = 0; i < number.Length - 1; i++)//趟数
     7             {
     8                 for (int j = 0; j < number.Length - 1 - i;j++ )//趟数没增加一次,这趟的比较次数就要减少一次。所以上面i++了,这里直接减去i就可以了。
     9                 {
    10                     if (number[j] < number[j + 1])
    11                     {
    12                         int temp;
    13                         temp = number[j];
    14                         number[j] = number[j + 1];
    15                         number[j + 1] = temp;
    16                     }
    17                 }
    18             }
    19             for (int a = 0; a < number.Length; a++)
    20             {
    21                 Console.WriteLine(number[a]);
    22             }
    23             Console.ReadKey();
    24         }
    View Code

    涉及到知识:

      1,for(i=0;i<number.lengh;i++)这里一共循环了lengh+1次。

          for(i=0;i<number.lengh-1;i++) 这里才是循环了lengh次。

        属性这个概念对写循环很有帮助。

    2, 关于交换两个数:

         其口诀: 定义临时变量temp,前一个赋给temp,后一个赋给前一个,temp赋给后一个。

         熟记这个口诀对写代码的速度有很大提高。

  • 相关阅读:
    页面通过Ajax异步生成的添加按钮增加事件
    本地浏览器访问虚拟机上tomcat失败
    Android 6.0 动态申请 音频+拍照+相册 权限
    TouTiao开源项目 分析笔记6
    TouTiao开源项目 分析笔记5
    TouTiao开源项目 分析笔记4==>一个简单APP 整体常用框架
    TouTiao开源项目 分析笔记3
    TouTiao开源项目 分析笔记2
    Wind Of Change
    TouTiao开源项目 分析笔记1
  • 原文地址:https://www.cnblogs.com/visibleisfalse/p/3478541.html
Copyright © 2011-2022 走看看