超详细的~~~冒泡排序和选择排序
冒泡排序
/**
* 冒泡排序
* 核心思想:每次从数组的第一个位置开始两两比较,把较大的元素进行层层交换
* 最终把当前最大的一个元素存入到数组当前的末尾
*
* 冒泡的核心:
* 1、确定总共要冒几轮:数组的长度-1
* 2、每轮两两比较
* i(轮数) 次数
* 0 3
* 1 2 次数=数组的长度-i-1
* 2 1
* */
public class Demo {
public static void main(String[] args) {
int [] arr=new int[]{55,22,99,77};
//1、定义一个循环控制总共需要冒泡几轮,数组长度-1
for(int i=0;i<arr.length-1;i++){
//控制每轮比较几次
for(int j=0;j<arr.length-i-1;j++){
//当前元素大于后面元素
if(arr[j]>arr[j+1]){
//交换位置
//定义一个临时变量存储后一个元素
int temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
}
}
System.out.println("数组:"+ Arrays.toString(arr));
}
}
选择排序
import java.util.Arrays;
/**
* 选择排序
* 思想:从当前位置开始找出后面的较小值与该位置比较
* 思路:
* 1、控制选择几轮,数组长度-1
* 2、控制每轮从当前位置比较几次
* i(轮数) 次数
* 0 3
* 1 2 每轮比较的几次:数组的长度-i-1
* 2 1
* */
public class Demo {
public static void main(String[] args) {
int [] arr={5,1,2,4};
//定义一个循环控制选择几轮
for (int i=0;i<arr.length-1;i++){
//定义一个循环控制每轮比较几次
for (int j=i+1;j<arr.length;j++){
if(arr[j]<arr[i]){
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
System.out.println("数组:"+ Arrays.toString(arr));
}
}