数据结构与算法-----插入排序-----直接插入排序

package jzoffer;

import java.util.Scanner;

public class InsertSort {
	public static void main(String[] args) {
		System.out.println("未排序前的数据:");
		int [] a = {5,8,2,1,4,7,6,9,5,5};
		printArray(a);
		insertSort(a);
		System.out.println("已排序后的数据:");
		printArray(a);
	}
	public static void printArray(int [] array){
		System.out.print("{");
		for(int i=0;i<array.length;i++){
			System.out.print(array[i]);
			if(i<array.length-1){
				System.out.print(",");
			}
		}
		System.out.println("}");
	}
	public static void insertSort(int [] array){
		if(array == null || array.length<2){
			return;
		}
		for(int i =1;i<array.length;i++){
			int currentValue = array[i];//记录下待插入的数据元素
			int position = i;//记录下待插入的数据的index
			for(int j=i-1;j>=0;j--){ //遍历已经排序号的数组
				if(array[j] > currentValue){//要遍历已经排序好的数组,看把它插入到那个位置
					array[j+1] = array[j];//如果上面的判断成立的话,那么就要将已经排序好的数据中最后一个数赋给待插入的数据的位置
					position -= 1;//然后给待插入数据的位置-1,然后继续向前遍历比较
				}else{
					break;//当然如果if里面的判断条件不成立的话那就说明待插入的数据是最大的我们就不需要向后遍历了结束for循环
				}
			}
			array[position] = currentValue;//当然一趟排序完成之后,我们需要把待插入数据插入到他应该在的位置
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值