每天一个排序方法-插入排序

时间 : 19-05-16 栏目 : Java技术 作者 : 冰镇宝贝321 评论 : 1 点击 : 2,192 次

    插入排序的思想主要放在"插入"二字,主要就是从待排序列中取第一个待排元素,然后与其前面已排序列的元素比较,比较成功(或大或小),那么就把这个已排元素往后挪一个位置,空出来的位置就是插入的位置,依次循环.

要排的序列为 int array[] = {12,32,2,4,6,54,34,76,89,32,14};排序为升序排序.

(红色代表已排序列,黑色代表待排序列,绿色代表待排序列中的第一个元素)

第一次: {12,32,2,4,6,54,34,76,89,32,14 }  32前边有序序列没有比32大的元素,不需移动 ->{12,32,2,4,6,54,34,76,89,32,14}

第二次: {12,32,2,4,6,54,34,76,89,32,14 }  212小, 12,32往后移一位 -> {空位,12,32,4,6,54,34,76,89,32,14} ->2插入空位 -> {2,12,32,4,6,54,34,76,89,32,14}

第三次: {2,12,32,4,6,54,34,76,89,32,14}   412小, 12,32往后移一位 -> {2,空位,12,32,6,54,34,76,89,32,14} ->4插入空位->{2,4,12,32,6,54,34,76,89,32,14}

.........

第N次:{2, 4, 6, 12, 14, 32, 32, 34, 54, 76, 89}

 基本思想已经说完,需要注意的是,待排序列的第一个元素,需要存到临时变量,否则已排序列往后移动时会覆盖

package 排序算法;

public class ChaRuPaiXu {
	public static void main(String[] args) {
	    /**
	    * 简单的说,就是插入排序总共需要排序N-1趟,
	    * 从index为1开始,讲该位置上的元素与之前的元素比较,放入合适的位置,
	    * 这样循环下来之后,即为有序数组。
	    * */
	    int [] charu= {12,32,2,4,6,54,34,76,89,32,14};
	    int temp;
	    for(int i=1;i<charu.length;i++) { 
		for(int j=0;j<i;j++) {
		    if(charu[i]<charu[j]) {
		    //把小的拿出来,把前面的往后覆盖到该位置
		    temp=charu[i];
		    for(int k=i;k>j;k--) {
    			charu[k]=charu[k-1];
		    }
		    charu[j]=temp;
		    }
		}
	    }
	    for(int cr:charu) {
		    System.out.println(cr);
	    }
	}
}




本文标签 ,

除非注明,文章均为( 冰镇宝贝321 )原创,转载请保留链接: https://bkqv5.com/archives/349.html

每天一个排序方法-插入排序:目前有1 条留言

  1. Post:2019-05-16 下午6:45

    :grin:

发表评论




1