插入排序
算法思想: 对数组维持一个有序部分与一个无序部分,一开始有序部分只有第一个元素,然后从第二个开始将后面的元素插入到有序部分合适的位置;
代码实现:
package sort;
import java.util.Arrays;
/**
* @author yangpeng
* @create 2021-06-05 23:42
*/
public class InsertSort {
public static void main(String[] args) {
int [] arr={1,8,6,3,0,8,2};
insertSort(arr);
System.out.println(Arrays.toString(arr));
}
public static void insertSort(int [] arr){
for(int i=1;i<arr.length;i++){
int temp=arr[i]; //先将待插入的元素值存起来,后面移动元素时会覆盖当前值
int j=i-1; //有序部分最后一个元素的下标
while(j>=0&&arr[j]>temp){ //如果下标不越界且当前有序部分的元素还大于待插入的元素值,则说明还未找到符合的插入位置
arr[j+1]=arr[j];
j=j-1;
}
arr[++j]=temp; //将元素插入到合适的位置
}
}
}