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("\n");
//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("\n");
}
}