public class BubbleSort { /* * 冒泡排序 * * 参数说明: * a -- 待排序的数组 * n -- 数组的长度 */ public static void bubbleSort1(int[] a, int n) { int i, j; for (i = n - 1; i > 0; i--) { // 将a[0...i]中最大的数据放在末尾 for (j = 0; j < i; j++) { if (a[j] > a[j + 1]) { // 交换a[j]和a[j+1] int tmp = a[j]; a[j] = a[j + 1]; a[j + 1] = tmp; } } } } /* * 冒泡排序(改进版) * * 参数说明: * a -- 待排序的数组 * n -- 数组的长度 */ public static void bubbleSort2(int[] a, int n) { int i, j; int flag; // 标记 for (i = n - 1; i > 0; i--) { flag = 0; // 初始化标记为0 // 将a[0...i]中最大的数据放在末尾 for (j = 0; j < i; j++) { if (a[j] > a[j + 1]) { // 交换a[j]和a[j+1] int tmp = a[j]; a[j] = a[j + 1]; a[j + 1] = tmp; flag = 1; // 若发生交换,则设标记为1 } } if (flag == 0) break; // 若没发生交换,则说明数列已有序。 } } public static void Main(String[] args) { int i; int[] a = { 10, 20, 30, 40, 50, 60 }; Console.WriteLine("before sort:"); for (i = 0; i < a.Length; i++) Console.WriteLine("%d ", a[i]); Console.WriteLine(" "); //bubbleSort1(a, a.Length); bubbleSort2(a, a.Length); //Console.WriteLine("after sort:"); //for (i = 0; i < a.Length; i++) // Console.WriteLine("%d ", a[i]); //Console.WriteLine(" "); } }