交换排序之冒泡排序 Java代码:
算法思想:将要排序的序列,在序列内部的相邻序列进行两两比较,如果为逆序(A【d】》A【d+1】)就交换。
实列:
这就是一次冒泡的过程,在重复冒泡过程(如果序列长度为n,那么需要冒泡的次数应该就是n-1次)
特点:由于冒泡的过程可以从前往后进行冒泡(每次冒泡都会找到该序列的最大值)也可以从后往前冒泡两种方式(每次冒泡都会找到该序列的最小值)
Java代码:
public static void bubbleInsort(int[] arr) { int i,j; //循环变量 int temp = 0; //用于交换的第三方变量 boolean flag; //判断序列是否完成了冒泡排序(就是序列是否已经有序) for (i=0;i<arr.length-1;i++){ //冒泡次数 flag = false; for (j=arr.length-1;j>i;j--){ //从后往前比较相邻元素 if (arr[j-1]>arr[j]){ //交换条件 temp = arr[j-1]; arr[j-1] = arr[j]; arr[j] = temp; } flag = true; } if (flag == false){ return; } } } public static void main(String[] args) { int [] arr = {3,7,2,8,6,9,1,4,5}; bubbleInsort(arr); for (int i =0;i<arr.length;i++){ //升序输出序列 System.out.print(arr[i]+" "); } System.out.println("-----------------------------------"); for (int i =arr.length-1;i>=0;i--){ //逆序输出序列 System.out.print(arr[i]+" "); } }