冒泡排序以及冒泡排序的优化

时间:2015-03-15 19:35:20   收藏:0   阅读:168

说明:很简答的优化,却有很多人容易在面试时候栽在这个简单的问题上。

“冒泡排序”在面试中是很容易被问到的排序算法,也是最简单的排序算法,当被问到,“冒泡排序怎么优化?”,很多人就懵了,冒泡还能优化?答案是可以的。

1. 这是一般的冒泡排序。

 1         /// <summary>
 2         /// 通俗冒泡
 3         /// </summary>
 4         public static void BubbleSortCommon(int[] arr)
 5         {
 6             int temp;
 7             int len = arr.Length - 1;
 8             for (int i = 0; i < len; i++)
 9             {
10                 for (int j = 0; j < len - i; j++)
11                 {
12                     if (arr[j] > arr[j + 1])
13                     {
14                         temp = arr[j];
15                         arr[j] = arr[j + 1];
16                         arr[j + 1] = temp;
17                     }
18                 }
19             }
20         }

2. 这是优化后的冒泡排序。仅仅加了一个标识,相对于通俗的冒泡排序,却能更好地处理已经排好序或者几乎排好序的数组,避免做无用功。

 1         /// <summary>
 2         /// 优化冒泡
 3         /// </summary>
 4         public static void BubbleSortOptimize(int[] arr)
 5         {
 6             int flag = 0;
 7             int len=arr.Length-1;
 8             int temp;
 9             while (flag == 0)
10             {
11                 flag = 1;
12                 for (int i = 0; i < len; i++)
13                 {
14                     if (arr[i] > arr[i + 1])
15                     {
16                         temp = arr[i];
17                         arr[i] = arr[i + 1];
18                         arr[i + 1] = temp;
19                         flag = 0;
20                     }
21                 }
22                 len--;
23             }
24         }

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!