思想:将元素插入到已经排好序的部分数组中。当元素按照从小到大的顺序排序时,若该元素比前面一个元素大,则已经找到位置,不需要再向前面进行比较,直接退出while循环
import java.util.Arrays;
public class InsertSort {
private static void insertSort(int[] arr){
//将一个元素插入到已经排好序的数组中,默认第一个元素是有序的,所以从第二个元素遍历
for(int i=1;i<arr.length;i++){
//定义j指向需要插入的元素
int j=i;
while(j>0){
if(arr[j]<arr[j-1]){
swap(arr,j,j-1);
j--;
}else{
//如果当前元素比有序数组中要比较的元素大,就是找到位置了,不需要再进行比较了
break;
}
}
}
}
private static void swap(int[] arr,int i,int j){
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
public static void main(String[] args) {
int[] arr=new int[]{9,8,7,6,5,4,3,2,1};
insertSort(arr);
System.out.println(Arrays.toString(arr));
}
}