码迷,mamicode.com
首页 > 编程语言 > 详细

插入排序JAVA实现

时间:2015-03-27 23:32:21      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

package kpp.sort;
/**
 * 当前待插入元素data[i],若data[i]>=data[i-1],则表示排序正常,i++处理下一个元素
 * 若data[i]<data[i-1],先保存data[i]至temp,查找到适合插入的位置k,从k到i-1的元素顺序右移
 * 将temp插入到k
 *  
 * 分析:

  直接插入排序是稳定的排序。
   文件初态不同时,直接插入排序所耗费的时间有很大差异。
   若文件初态为正序,则每个待插入的记录只需要比较一次就能够找到合适的位置插入,故算法的时间复杂度为O(n),这是最好的情况。
   若初态为反序,则第i个待插入记录需要比较i+1次才能找到合适位置插入,故时间复杂度为O(n2),这是最坏的情况。
   直接插入排序的平均时间复杂度为O(n^2)。 *
@author kpp */ public class InsertSort { public static void main(String[] args) { // TODO Auto-generated method stub int array[] = {5,3,2,67,1,8}; insertSort(array); for(int k :array){ System.out.println(k); } } private static int insertSort(int a[]){ int len = a.length; for(int i = 1;i < len;i++){ if(a[i] < a[i-1]){ int temp = a[i]; int j; //方法1:找到插入位置,统一向右移动 //找到插入位置 for(j = i-1;j >=0&&temp < a[j];j--); //统一向右移动 for(int k = i-1;k >= j+1;k--){ a[k+1]=a[k]; } //插入正确位置 a[j+1] = temp; //方法2:比较一个,移动一个 /*for(j = i-1;j >=0;j--){ if(temp < a[j]){ a[j+1] = a[j]; }else{ break; } } a[j+1] = temp;*/ } } return 0; } }

 

插入排序JAVA实现

标签:

原文地址:http://www.cnblogs.com/kangpp/p/4372959.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!