冒泡排序:
相邻元素比较,符合条件交换位置,每轮比较会得到一个最大或者最小的值。数组有多少个元素就需要比较几轮,但是倒数一轮比较的时候数组已经排好序了,即最后一轮比较是多余的,因此共比较(arr.lenth-1)轮。每轮相邻元素比较(arr.lenth-1)次,由于每轮比较会冒出一个排好序的值,因此每轮又可以减少之前冒泡得到的元素,因此每轮只需要比较(arr.length-1-第几轮)次。实现如下:
package com.kf;
import java.util.Arrays;
/**
* 冒泡排序(相邻元素比较,每轮比较冒出一个最大或者最小的数。如果某一次没有交换位置则说明排序完成)
*
* @author LeiLei
* @date 2019/7/2
*/
public class BubbleSort {
/**
* 总共比较次数
*/
private static int count = 0;
/**
* 数组是否已经排序完成
*/
private static boolean haveSorted = true;
public static void main(String[] args) {
Integer[] arr = {3,9,4,5,2,1,8};
//Integer[] arr = {1,1,1,1,1,1,1};
//39 94 45 52 21 18
//94 45 52 21 18
//45 52 21 18
//52 21 18
//21 18
//18
//1+2+3+4+5+6 = 2