插入排序
1、插入排序思路
就是从一开始是一个个插入,每次插入后排序。
其基本原理是:
(1)初始时假设第一个记录自成一个有序序列,其余记录为无序序列;
(2)接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到之前的有序序列之中,直到最后一个数插入到有序序列为止。
2、插入排序实现
public class test01 {
public static void main(String[] args) {
int[] arr={34,76,23,10,87,60,59,29,83};
insertSort(arr);
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
}
/**
* 插入排序
* @param arr
*/
public static void insertSort(int [] arr){
for(int i=1;i<arr.length;i++){//从第二个记录开始
int temp=arr[i];//temp为要插入的值
int j=i;//类似于定义一个指针,指向要插入值的位置
if(arr[i-1]>temp){//如果前面的记录比要插入的值大,就循环
while(j-1>=0&&arr[j-1]>temp){//循环条件是前面的记录比要插入的值大,且指针保证大于1
arr[j]=arr[j-1];//指针处的值更换为前一个位置的值(即大值后移)
j--;//指针前移
}
}//直到要插入的值前面的值比它小。
arr[j]=temp;//指针处的值赋值为插入的值
}
}
}
运行结果:
10 23 29 34 59 60 76 83 87