插入排序
package demo5;
/**
* 插入排序
*/
import java.util.Arrays;
public class InsertSort {
public static void main(String[] args) {
int[] arr = new int[]{3,2,5,7,1,4,9,8,6};
insertSort(arr);
System.out.println(Arrays.toString(arr));
}
/**
* 原数组: 3,2,5,7,1,4,9,8,6
*第一次 2,3,5,7,1,4,9,8,6 2和3比较
*第二次 1,2,3,5,7,4,9,8,6 7和1比较,换,5和1比较,换,3和1比较,换,1和2比较,换,结束
* 第三次 1,2,3,4,5,7,8,8,6 7和4比较.....
*/
public static void insertSort(int[] arr){
//遍历所有的数字
for(int i=1;i<arr.length;i++){
if(arr[i]<arr[i-1]){
//如果当前这个数比前面的数小,则先把当前这个数存到一个临时变量中去,然后继续遍历
int temp = arr[i];//把2赋值到temp
//然后看往后的数直到第一个数有没有比临时变量还要小的数
int j;
for (j = i-1;j>=0&&temp<arr[j];j--){
//把前一个的数字赋值给后一个的数字,依次赋值,直到j=-1或temp大于前面的数
arr[j+1]=arr[j];
}
arr[j+1]=temp;
}
}
}
}