解释:它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
代码:
1 static void Bubblesort2A(int[] a, int n) 2 { 3 int s = 0,t=0; 4 bool sorted = false; 5 while (!sorted) 6 { 7 sorted = true; 8 for (int i = 1; i < n; i++) 9 { 10 if (a[i - 1] > a[i]) 11 { 12 t = a[i]; 13 a[i] = a[i - 1]; 14 a[i - 1] = t; 15 sorted = false; 16 } 17 s += 1; 18 } 19 n--; 20 } 21 foreach (var item in a) 22 { 23 Console.WriteLine(item); 24 } 25 Console.WriteLine(s); 26 }
理解:每次循环交换大小顺序,后一个和前一个比较,这样子每次循环完后面大的数字已经是正常的排序了,下次排序次数就可以减一,直至没有需要排序的数据了。
时间复杂度: