c# 冒泡排序


冒泡排序:

我一直好奇为什么不叫沉底排序:( 主体思路是做两层操作:   外层操作目标是每次都是把最大的元素调整到最底部.   策略是内层循环:相邻比较,存在逆序则交换,直至完成一个循环就能将最大的沉到最底部. 一个细节:如果某次循环没有找到逆序对,就直接跳出循环.不必非要执行到第一个元素. 稳定,时间复杂度是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         }