`
flyingdutchman
  • 浏览: 353347 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

插入排序

阅读更多
        插入排序是一中经常使用的算法,特别适合于部分有序和小规模数组的排序。相同情况下它比选择排序的速度要快一倍;在小规模数据集的排序中,也比快速排序要快。
        插入排序是一种稳定的排序算法,其排序时间受待排序的数组中的元素顺序的影响较大。
        其思想是:将整个待排序的数组分为有序和无序的两部分,每次处理就是将无序数列的第一个元素与有序数列的元素从后往前逐个进行比较,找出插入位置,将该元素插入到有序数列的合适位置中。
        Java代码如下:
 package org.test;

 /**
  * 经典的插入排序算法,特别适合于部分有序和小规模数组的排序
  * 相同情况下它比选择排序的速度要快一倍;在小规模数据集的排序中,
  * 也比快速排序要快
  * @author JackyChen
  *
  */
 public class InsertSort{
  
	public static void sort(Comparable[] a){
		//按升序排序
		int len = a.length;
		for(int i =1;i < len;i++){
			//将a[i]插入到a[i-1]、a[i-2]...之中
			for(int j = 1;j >0 && less(a[j],a[j-1]);j--){
				exch(a,j,j-1);
			}
		}
	}
	
	/*
	 * 将a[i]和a[j]交换顺序
	 */
	public static void exch(Comparable[] a, int i, int j) {
		Comparable swap = a[i];
        a[i] = a[j];
        a[j] = swap;
    }
	
	/**
	 * 判断v1是否小于v2
	 * @param v1
	 * @param v2
	 * @return true:小于;false:不小于
	 */
	public static boolean less(Comparable v1,Comparable v2){
		return v1.compareTo(v1) < 0;
	}
 }


       
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics