1.什么是插入排序
插入排序是一种简单而高效的排序算法,其基本思想是将一个待排序的数组分为已排序和未排序两部分,每次从未排序部分中取出一个元素,插入到已排序部分的合适位置,直到所有元素都被插入到已排序部分为止。插入排序的时间复杂度为O(n^2),但是在实际应用中,插入排序的效率比冒泡排序和选择排序要高,尤其是对于部分有序的数组,插入排序的效率更是非常高。
2.插入排序的步骤
第一步:认为数组当中的第一个数值是已经排序好的数值
第二步:定义一个游标i,从第二个数值开始,不断的向后进行遍历
第三步:游标指向的数据插入已经排序好的数组当中
如何实现插入?
定义j游标,j指向i的前一个数据,j+1指向i,j和j+1进行比较,arr[j]大,数据交换,j--
图文解释
第一步:
第二步:
第三步:
3.代码实现
public static void main(String[] args) {
int[] arr={5,7,4,2,0,3,1,6};
sort(arr);
System.out.println(Arrays.toString(arr));
}
//插入排序
public static void sort(int[] arr) {
for (int i=1;i<arr.length;i++){
for (int j=i-1;j>=0;j--){
if (arr[j]>arr[j+1]){
int a=arr[j];
arr[j]=arr[j+1];
arr[j+1]=a;
}
}
}
}