插入排序算法 Java实现

 插入排序算法是算法排序中的一种;

该算法是假设已有序列是有序序列,从首元素(首元素为单个元素,肯定是有序的...)开始分析,对其他元素的位置进行有序的确定;

以算法为例:

 

 1 public class InsertionSort {
 2     public static void insertionSort(int a[]) { 
 3     //插入排序算法
 4      int i,j,key,n=a.length;       //key值存储当前比较中最小的值
 5      for(j=1;j<n;j++){             
 6          key=a[j];                 //key<-a[j]
 7          i=j-1;                    //i=j-1表示从当前有序数组最后一个元素开始算
 8          while(i>=0&&a[i]>key){    
 9              //当还未到达数组的起始并且当前元素大于要插入的数key,则i值与后一位进行交换,并且i值减小
10              //这可以保证大于key的所有元素依次向末尾方向移动一位
11              //保证,key到达的位置前面没有大于key的元素,后面也没有小于key
12              //这就是插入排序算法的思想
13              a[i+1]=a[i];
14              i--;
15          }
16          a[i+1]=key;
17      }
18     }
19 }

 

加强版   插入排序算法:

 1 public class InsertionSortSecond {
 2 public static void insertionSort(Comparable[] a) {
 3 int i,j,k,n=a.length;
 4 Comparable key;
 5 for(j=1;j<n;j++){
 6 key=a[j];
 7 i=j-1;
 8 while(i>=0&&(a[i].compareTo(key)>0)){
 9 a[i+1]=a[i];
10 i--;
11 }
12 a[i+1]=key;
13 }
14 }
15 }

 

加强版 插入排序:

public class InsertionSortThrid {
public static void InsertionSort(List<Comparable> a) {
int i, j, n = a.size();
Comparable key;
for (j = 1; j < n; j++) {
key = a.get(j);
i = j - 1;
while (i > 0 && a.get(i).compareTo(key) > 0) {
a.set(i + 1, a.get(i));
i--;
}
a.set(i, key);
}
}
}

 

转载于:https://www.cnblogs.com/Su-feng-address/p/9625410.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值