1.什么是插入排序。
理解一:给定一组元素,长度大小为n,从索引为1的位置开始,每次从已经排序好的序列往前查找,找到第一个比当前元素小的元素,将当前元素插入其后。若被查找元素比当前的元素大,则被查找的元素后移。
将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
理解二:从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)
说的再多,不如撸代码
public class Solution{
public ArrayList<Integer> sort(int [] arr){
// 从下标为1的元素开始选择合适的位置插入,因为下标为0的只有一个元素,默认是有序的
for(int i=1;i<arr.length;i++{
int tmp=arr[i]; //记录需要插入的数据
int j=i
while(j>0 && tmp<arr[j-1]){ //判断当前元素前面的每一个元素,如果前面的元素大于tmp,将前面的元素后移。
arr[j]=arr[j-1];
j--; //每次移动,会空出j的位置。
}
if(j!=i){
arr[j]=tmp; //若有移动,将tmp填入到arr[j]中
}
}
return arr;
}
阅读完毕,您的点赞和评论是对作者最大的支持!