说明:很简答的优化,却有很多人容易在面试时候栽在这个简单的问题上。
“冒泡排序”在面试中是很容易被问到的排序算法,也是最简单的排序算法,当被问到,“冒泡排序怎么优化?”,很多人就懵了,冒泡还能优化?答案是可以的。
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 }
原文:http://www.cnblogs.com/HuoAA/p/4340143.html