鱼说。。。的博客

想想自己的错,就会慢慢忘记别人的过。

插入排序初识 有啥区别?

        对于冒泡和选择我一看就明白是怎么回事了,但是这个插入排序让我蒙圈了几分钟,再仔细一看,恍然大悟,抓住“局部有序”找到突破口。这就很灵性了,我先不管后面的数据项到底是什么样的,但是我可以在这组数据中标记一个位置,我可以确保,在我的标记位置之前的数据是有序的。talk is cheap show my code!
        

package javal.util.test;

public class InsertSort {
	
	
	//先使局部有序
	public static void insertSort(long[] array) {
		
		int in, out, len=array.length;
		
		for(out = 1; out< len ; out ++) {
			
			long temp = array[out];
			in = out;
			while(in >0  && array[in -1] >= temp) {
				array[in] = array[in -1];
				--in;
			}
			array[in] =temp;
		}
	}
	
	public static void main(String[] args) {
		long[] array = new long[] {2,8,3,5,1,2356,776};
		insertSort(array);
		
		for (long l : array) {
			System.out.println(l);
		}
	}
}
        插入排序的几个注意点:

        1.外层for循环,out变量从1开始,向右移动,它标记了未排序数据的最左端数据。

        2.内层while循环中, in 变量从out变量位置开始,向左移动,直到temp变量小于in所指的数据项,或者直到它不能再左移为止,while 循环每执行一次,都向右移动了一个已排序的数据项。

        ps:上叙程序中 下标为1的 左边的数据肯定是有序的,如果有序的个数更多,那么标记的下标位置也可以变大。那么再看上述程序,其实标记位置也可以为2. 道理显而易见,因为 下标2之前的数据是有序的。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载,转载请标明原文出处。 https://blog.csdn.net/qq_31408331/article/details/79980943
个人分类: 数据结构与算法
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

插入排序初识 有啥区别?

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭