实现思路
1.将数组分为两个区域,排序区域和未排序区域,每一轮
从未排序区域中取出第一-个元素,插入到排序区域(需
保证顺序)
2.重复以上步骤,直到整个数组有序
代码实现
public class InsertSort {
public static void main(String[] args) {
int[] arr = {1, 3, 5, 7, 4, 6, 8, 9, 0};
insertSort(arr);
}
public static void insertSort(int[] arr){
//i代表插入元素的索引
for (int i = 1; i < arr.length; i++) {
//代表待插入的元素值
int t = arr[i];
//代表已排序区域的元素索引
int j = i-1;
//>=0表示不是第一个元素
while (j>=0){
//待插入的元素值小于已插入的元素值
if (t<arr[j]){
arr[j+1]=arr[j];
}else {
//都不小于,则表示带插入元素值大于已插入元素的值
break;
}
j--;
}
//把较小的元素放已排序区域中
arr[j+1]=t;
System.out.println(Arrays.toString(arr));
}
}
}
和选择排序进行比较
1:大部分情况下,插入都略优于选择
2:插入属于稳定排序算法,而选择属于不稳定排序