冒泡排序:
我一直好奇为什么不叫沉底排序:(
主体思路是做两层操作:
外层操作目标是每次都是把最大的元素调整到最底部.
策略是内层循环:相邻比较,存在逆序则交换,直至完成一个循环就能将最大的沉到最底部.
一个细节:如果某次循环没有找到逆序对,就直接跳出循环.不必非要执行到第一个元素.
稳定,时间复杂度是O(N2)
1 public static void Bubble_Sort(int[] source)
2 {
3 int length = source.Count();
4 for (int p = length-1; p >=1; p--)
5 {
6 int flag = 0;
7 for (int i = 0; i < p; i++)
8 {
9 if (source[i] > source[i + 1])
10 {
11 Swap(source, i, i + 1);
12 flag = 1;
13 }
14 }
15 if (flag == 0) return;
16 }
17 }
18
19 public static void Swap(int[] source, int i, int v)
20 {
21 int temp = source[i];
22 source[i] = source[v];
23 source[v] = temp;
24 return;
25 }