经典排序算法——直接插入排序算法

直接插入排序

每一趟将一个待排序的记录,按其关键字的大小插入到已经排好序的一组记录的适当位置上,直到所有待排序记录全部插入为止。

直接插入排序是由两层嵌套循环组成的。外层循环标识并决定待比较的数值。内层循环为待比较数值确定其最终位置。直接插入排序是将待比较的数值与它的前一个数值进行比较,所以外层循环是从第二个数值开始的。当前一数值比待比较数值大的情况下继续循环比较,直到找到比待比较数值小的并将待比较数值置入其后一位置,结束该次循环。

时间复杂度On^2)

如下面的例子:


下面我们用 java 来实现一下它。

/*
	 * 直接插入排序
	 * 时间复杂度 :O(n^2)
	 * 稳定:没有跳跃式的比较
	 */
	
	public static void insertSort(int[] array){
		int temp = 0,j;
		for(int i = 1;i < array.length;i++){
			temp = array[i];//从i号位置开始进行排序。
			for(j =i-1;j >= 0;j--){
				if(array[j] > temp){
					array[j+1] = array[j];
				} else {//每次排序过后前面已经有序,找到第一个比temp小的。
					break;
				}
			}
			array[j+1] = temp;
		}
	}

测试:
public static void main(String[] args){
		int[] array = {23,31,12,21,3,1,5};
		insertSort(array);
		show(array);	
	}
结果为:1 3 5 12 21 23 31 


猜你喜欢

转载自blog.csdn.net/alyson_jm/article/details/80371995