交换排序主要包括冒泡排序和快速排序两种,其中快速排序是目前最常用、最快速的排序方法之一。
冒泡排序又称气泡排序,它是一种非常简单的排序方法。其基本过程是通过比较和交换将较小的元素逐渐浮向顶部,如同水底的气泡一样向上冒,这就是它名称的由来。气泡排序是稳定的。
气泡排序的思想是:首先从头向后扫描数据,在扫描过程中逐次比较相邻数据的大小。若前面的元素大于后面的元素,则将它们互换,在这个扫描完成之后,数据之中的最大者就换到了最后。然后从后向前扫描数据,在扫描过程中逐次比较相邻数据的大小,若前面的元素大于后面的元素,则将它们互换。在这个扫描完成之后,就将数据中的最小者移动到了最前面。这两次扫描完成之后,至少最大者和最小者已经归位,待排序的数据个数也可以减少两个。继续进行扫描,最终可以使所有的数据归位。
<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