前言
今天还是接着学十大排序算法,总结的是插入算法
1.定义
插入排序是一种简单直观的排序算法。
2.算法思路
把n个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含1个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。(其实关键就在于无序表插入有序表)
那么它是具体是怎么操作的呢?上面举个例子
3.例子
假设有一串初始数列{4,7,2,1,3,5} 1.一开始有序表只包含1个元素,就是{4} 2.从第二个位置7来和第一个位置4比较,4比较小,不交换位置得到{4,7} 3.从第三个位置2和前面的位置7比较,比7小,和7交换位置,依次往前比较。得到{2,4,7} 4.从第四个位置1和前面的位置7比较,比7小,和7交换位置,依次往前比较,得到{1,2,4,7} …n轮过去后 n.得到一个有序数列{1,2,3,4,5,7}
4.代码实现
import java.util.Arrays;
public class insertSort {
public static void main(String[] args) {
int[] arr = {4,7,2,1,3,5};
insertSort(arr);
System.out.println(Arrays.toString(arr));
}
public static void swap(int[] arr,int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
public static void insertSort(int[] arr){
for(int i = 1; i < arr.length; i++){
for (int j = i; j > 0;j--){
if (arr[j] < arr[j-1]){
swap(arr,j,j-1);
}
else {
break;
}
}
}
}
}
5.特点
算法稳定性:稳定 时间复杂度:O(n2)
|