冒泡排序
是一种简单直观的排序算法.
冒泡排序的理解:
可以说是反向 j 循环; 主要是靠下标 j 来轮流交换; 缺点是:效率不高;
- 设置2个下标,i 和 j , i++ 从左向右前进 ; j- - 从右到左 相邻的数进行比较,小值向前(左)交换,一次交换一圈,每交换一圈 i 前进一步;直到最小值推到i位置,结束.
- 设置变量t用来做临时替换位置的参数;
代码实现:
public class BubbleSort {
public static void main(String[] args) {
//产生一个随机乱序数组
int [] a=suiji();
System.out.println(Arrays.toString(a));
System.out.println("-----------------");
Sort(a);//对数组a排序
System.out.println(Arrays.toString(a));
}
private static int[] suiji() {
// 产生一个随机整数值存到变量n.范围5+(0,6)
int n =5+new Random().nextInt(6) ;
//新建int[]数组,长度n。地址存到变量a
int [] a=new int[n];
//遍历填入100内随机整数
for(int i=0;i<a.length;i++){
a[i]=new Random().nextInt(100);
}
//返回数组a
return a;
}
//**下面是核心代码:**
private static void Sort(int[] a) {
// [65, 44, 8, 6, 52, 73]数组进行排序,i++,j--,主要靠j递减
//j从后向前递减,把较小值向前交换,知道把最小指推到i位置为止
for(int i=0;i<a.length;i++){
boolean flag = false;
//j循环把最小值推到i位置
for(int j=a.length-1;j>i;j--){
if(a[j]<a[j-1]){
int t =a[j]; //开始交换位置;
a[j]=a[j-1];
a[j-1]=t;
flag= true;
}
}
//判断是否排序完成,完成后提前结束,避免后期重复排序
if(!flag){
break;
}
}
}
}