冒泡排序
本文主要介绍冒泡排序
int[] arr = {10,23,1,34,22};
图解冒泡排序过程
由此得出
总的排序趟数是数组元素个数-1(最后一个元素无需进行排序),每趟排序过程中进行比较次数是数组元素个数-当前趟数。
原因:第一趟排序,未确定顺序的元素个数是5,比较次数是5-1;第二趟排序,未确定顺序的元素个数是4,比较次数是4-1。依次类推,第 i 趟排序,比较次数是5 - i 。
此外,当进行第3趟排序时,所有元素已经有序,因此无需进行下一趟排序,可以设置变量flag,标志每趟排序过程中是否出现逆序,如果没有,则排序完成,否则继续进行排序。
代码如下图所示:
public class BubbleSort { public void BubbleSorts(int[] arr) { boolean flag = true; for(int i =0 ;i< arr.length - 1;i++) { for(int j = 1;j< arr.length-i;j++) { if(arr[j-1] > arr[j]) { flag = false; int temp = arr[j-1]; arr[j-1] = arr[j]; arr[j] = temp; } } if(flag) { break; } } } public static void main(String[] args) { // 冒泡排序 int[] arr = {10,23,1,34,22}; BubbleSort bubbleSort = new BubbleSort(); bubbleSort.BubbleSorts(arr); for(int i =0;i<arr.length;i++) { System.out.print(arr[i]+ " "); } } }