排序之插入排序
简介:
插入排序就是:把每一个元素都插入到合适的位置,从第二个开始,依次插入到已经排序的数组中。类似于玩扑克的排火车。
思路:
1.首先一个for,i从1到n-1,把每一个target放入合适的位置。
2.接下来就是插入每一个值了,这里有两个条件,首先下标得大于0吧,不能越界,其次假设要排升序,那么这个值如果大于target,就需要向后移动了(插入排序是向后移动一个位置),然后如此进行,之后将target放到插入的位置就完成了。
这里放入一个图是《挑战程序设计竞赛2》中的可以方便理解。
代码
class Solution {
public int[] sortArray(int[] nums) {
int target,j;
for(int i = 1;i < nums.length;i++){
target = nums[i];
j = i - 1;
//从目标值前一个开始向后移动
while(j >= 0 && nums[j] > target){
nums[j+1] = nums[j];
j--;
}
nums[j+1] = target;
//这里j+1才是要插入的位置因为多执行了一次j--;
}
return nums;
}
}