冒泡排序思想:
较大的记录往下沉淀。
改进型冒泡排序:
较大的记录往下沉淀。
/**
* SimpleBubbleSort.java
*
* 冒泡排序。
*
* @author Administrator
*/
public class SimpleBubbleSort {
public static void simpleBubbleSort(int[] a) {
for (int i = a.length; i > 1; i--)
for (int j = 0; j < i - 1; j++)
if (a[j] > a[j + 1])
Util.swap(a, j, j + 1);
}
public static void main(String[] args) throws Exception {
if (args.length == 0) {
System.out.println("请输入数字以空格隔开");
System.exit(-1);
}
int[] a = new int[args.length];
for (int i = 0; i < args.length; i++)
a[i] = Integer.parseInt(args[i]);
simpleBubbleSort(a);
// 输出排序后的数组元素。
for (int i = 0; i < a.length; i++)
System.out.println(a[i]);
}
}
改进型冒泡排序:
/**
* EnhancedBubbleSort.java
*
* 改进型冒泡排序。
*
* @author Administrator
*/
public class EnhancedBubbleSort {
public static void enhancedBubbleSort(int[] a) {
int i = a.length - 1;
while (i > 0) { // 表明上一趟曾进行过记录交换
int lastExchangedIndex = 0;
for (int j = 0; j < i; j++)
if (a[j] > a[j + 1]) {
Util.swap(a, j, j + 1);
lastExchangedIndex = j;
}
i = lastExchangedIndex; // 一趟排序中无序序列最后一个元素的位置
}
}
public static void main(String[] args) throws Exception {
if (args.length == 0) {
System.out.println("请输入数字以空格隔开");
System.exit(-1);
}
int[] a = new int[args.length];
for (int i = 0; i < args.length; i++)
a[i] = Integer.parseInt(args[i]);
enhancedBubbleSort(a);
// 输出排序后的数组元素。
for (int i = 0; i < a.length; i++)
System.out.println(a[i]);
}
}