[游戏开发-学习笔记]菜鸟慢慢飞(六)- 冒泡排序

 1         /// <summary>
 2         /// 冒泡排序算法
 3         /// </summary>
 4         /// <param name="array"></param>
 5         public static void sort(int[] arr)
 6         {
 7             int temp = 0;
 8             for (int i = 0; i < arr.Length - 1; i++)
 9             {
10                 for (int j = 0; j < arr.Length - 1 - i; j++)
11                 {
12                     if (arr[j] > arr[j + 1])
13                     {
14                         temp = arr[j + 1];
15                         arr[j + 1] = arr[j];
16                         arr[j] = temp;
17                     }
18                 }
19             }
20         }

小记:

    • i < arr.Length - 1,外循环,最后一次比较:最后一位数(没动过)VS 倒数第二位数(可能是交换过的);最后一位数比较完毕了,所以循环次数为 “arr.Length - 1”;
    • j < arr.Length - 1 - i,内循环,
      • 第一次循环(i=0),比只较到末尾的一对,所以循环次数要“arr.Length - 1 ”
      • 第二次循环(i=1),末尾的一对已经比较过了,不需要再比较,我们比较到倒数第二组为止,所以j的循环次数要“arr.Length - 1-1”
      • 第三次循环(i=2),末尾的两对已经比较过了,我们比较到倒数第三组为止,所以j的循环次数要“arr.Length - 1-2”
      • 类推得出“ j < arr.Length - 1 - i”;
原文地址:https://www.cnblogs.com/workhai/p/6230356.html