交换排序主要包括冒泡排序和快速排序两种,其中快速排序是目前最常用、最快速的排序方法之一。
冒泡排序又称气泡排序,它是一种非常简单的排序方法。其基本过程是通过比较和交换将较小的元素逐渐浮向顶部,如同水底的气泡一样向上冒,这就是它名称的由来。气泡排序是稳定的。
气泡排序的思想是:首先从头向后扫描数据,在扫描过程中逐次比较相邻数据的大小。若前面的元素大于后面的元素,则将它们互换,在这个扫描完成之后,数据之中的最大者就换到了最后。然后从后向前扫描数据,在扫描过程中逐次比较相邻数据的大小,若前面的元素大于后面的元素,则将它们互换。在这个扫描完成之后,就将数据中的最小者移动到了最前面。这两次扫描完成之后,至少最大者和最小者已经归位,待排序的数据个数也可以减少两个。继续进行扫描,最终可以使所有的数据归位。
<pre name="code" class="java">// 冒泡排序 x待排序数组, n数组长度
private static void bubbleSort(int[] x, int n) {
int head, tail, i, j, t;
head = 0;
tail = n - 1;
while (head < tail) {
j = tail;
for (i = head; i < j; i++) { //从前向后扫描
if (x[i] > x[i + 1]) {
t = x[i];
x[i] = x[i + 1];
x[i + 1] = t;
tail = i; // 当前交换到的最大位置
}
}
j = head;
for (i = tail; i > j; i--) { //从后向前扫描
if (x[i - 1] > x[i]) {
t = x[i];
x[i] = x[i - 1];
x[i - 1] = t;
head = i; //交换到最小值位置
}
}
}
// 打印排序后的数组
for (int m = 0; m < x.length; m++) {
System.out.println(x[m]);
}
return;
}
原文地址:http://blog.csdn.net/zbao6062/article/details/43314929