冒泡排序: 稳定排序
BUBBLE_SORT(A) {
for i <- 0 to length[A]-1
for j<- 0 down to length[A] - i- 1
do
if(A[j] >= A[j+1])
then exchange A[j]<->A[j+1]
时间复杂度:
最差: O(n^2) //反序
平均: O(n^2)
最好: O(n) //正序
package test; import java.util.Arrays; /** * 冒泡排序 * 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 * 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 * 针对所有的元素重复以上的步骤,除了最后一个。 * 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 * @param numbers 需要排序的整型数组 */ public class BubbleSort { <span style="white-space:pre"> </span>static void Bubble(int A[], int len) { <span style="white-space:pre"> </span>//从第0个位置开始遍历,直到倒数第二个 <span style="white-space:pre"> </span>for(int i = 0; i < len-1; i++) { <span style="white-space:pre"> </span>//从0 开始,遍历到len-i-1,后面已经排好序的不需要再比较 <span style="white-space:pre"> </span>for(int j = 0; j < len - i - 1; j++) { <span style="white-space:pre"> </span>//比较相邻两个数的大小,如果前面的数大于后面的数,将其交换 <span style="white-space:pre"> </span>if(A[j] > A[j+1]) { <span style="white-space:pre"> </span>int temp = A[j]; <span style="white-space:pre"> </span>A[j] = A[j+1]; <span style="white-space:pre"> </span>A[j+1] = temp; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static void main(String[] args) { <span style="white-space:pre"> </span>int A[] = new int[]{4,6,2,7,3,8,9,5,0,1}; <span style="white-space:pre"> </span>Bubble(A,A.length); <span style="white-space:pre"> </span>System.out.println(Arrays.toString(A)); <span style="white-space:pre"> </span>} }