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

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;//当然一趟排序完成之后,我们需要把待插入数据插入到他应该在的位置
		}
	}
}

阅读更多
个人分类: 数据结构与算法
想对作者说点什么? 我来说一句

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

不良信息举报

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

最多只允许输入30个字

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