冒泡排序
1.1 概念
==核心思想:==在数组中,将第一个元素和第二个元素进行比较,若为逆序则将两个元素交换,然后比较第二个元素和第三个元素。依次类推,直至第 n-1个元素和第 n个元素进行比较为止。上述过程称为第一趟冒泡排序,其结果使最大值元素被放置在最后一个位置(第 n个位置)。然后进行第二趟冒泡排序,对前 n-1个元素进行同样操作,其结果是使第二大元素被放置在倒数第二个位置上(第 n-1个位置)。
对于升序:a[i] > a[i+1]就是逆序;对于降序:a[i] < a[i+1]就是逆序
1.2 代码实现
import java.util.Arrays;
public class BoubbleSort {
public static void main(String[] args) {
int[] a={5,9,7,4,1,3,2,8};
boubble(a);
}
//排序函数
public static void boubble(int[] a) {
int n=a.length-1;//每轮冒泡的比较次数:要经过几次比较才结束本轮冒泡
int k=0;//记录冒泡轮数
//冒泡
while (n!=0){
int last=0;//表示最后一次交换的索引位置
//比较
for (int i = 0; i < n; i++) {
System.out.println("第"+(i+1)+"次比较");
if (a[i]>a[i+1]) {
swap(a,i,i+1);
last=i;
}
}
n=last;
k++;
//如果n==0,代表排序完成,直接跳出冒泡
if (n==0) {
break;
}
System.out.println("第"+k+"轮冒泡排序结果:"+ Arrays.toString(a));
}
}
//交换函数
public static void swap(int[] a,int i,int j) {
int t=a[i];
a[i]=a[j];
a[j]=t;
}
}