【数据结构】--【排序】--直接插入排序

 * 直接插入排序:在排序过程中,向有序子表逐个的插入元素操作进行了n-1趟,每趟操作都分为比较关键字和移动元素,而比较次数和移动次数取决于带排序表的初始状态。在最好情况下,时间复杂度O(n),最坏情况下O(n*n)
 * 稳定性:每次插入元素都是从后向前先比较在移动,稳定算法
 * 适用性:直接插入排序算法适用于顺序存储和链式存储的线性表,当为链式存储时,可以从后往前查找指定元素的位置;(大部分排序算法都仅适用于顺序存储的线性表)

public class SimpleInsertSort {

	public static void simpleInsert(int[] arr){
		if(arr==null||arr.length<2){
			return;
		}
		for(int i=1;i<arr.length-1;i++){
			for(int j=i-1;j>=0&&arr[j]>arr[j+1];j--){
				SimpleSorting.swap(arr, j+1, j);
			}
		}
		for (int i : arr) {
			System.out.println(i);
		}
	}
	public static void swap(int[] arr,int i,int minValue){
		int temp =arr[i];
		arr[i] =arr[minValue];
		arr[minValue]=temp;
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] arr = {1,3,5,7,9,2,4,6,8};
		simpleInsert(arr);
	}

}
插入排序示意图

猜你喜欢

转载自blog.csdn.net/lxiansheng001/article/details/88595298