package com.lin;
/**
* Created with IntelliJ IDEA.
* Description:冒泡排序
* User: dell
* Date: 2023-05-11
* Time: 22:07
*/
@SuppressWarnings("all")
public class BubbleSort {
public static void main(String[] args) {
int arr[]={5,2,6,9,8,1,4};
bubbleSort2(arr);
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
//优化版 记录每次最后比较的索引位置
public static void bubbleSort2(int []arr){
int n=arr.length - 1;//总共比较次数
while (true) {
int last = 0;//表示最后一次交换的索引位置
//第一轮冒泡 顺序从小到大
for (int i = 0; i < n; i++) {//减少内层循环的比较次数
if (arr[i] > arr[i + 1]) {
//交换值
int t = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = t;
last = i;
}
}
n = last;
if(n==0){
break;
}
}
}
public static void bubbleSort(int []arr){
boolean flag=false;//
for(int j=0;j<arr.length-1;j++) {
//第一轮冒泡 顺序从小到大
for (int i = 0; i < arr.length - 1-j; i++) {//减少内层循环的比较次数
if (arr[i] > arr[i + 1]) {
//交换值
int t = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = t;
flag=true;//发生了交换
}
}
if(!flag){
break;
}
}
}
}