插入排序算法

插入排序算法

插入排序算法是一种简单且有效的比较排序算法。在每次迭代过程中算法随机地从输入序列中移除一个元素,并将该元素插入待排序序列的正确位置。重复该过程,直到所有输入元素都被选择一次。优点是实现简单,数据量较少的时候效率高,稳定性,原地排序。

原始序列:6 8 1 4 5 3 7 2,升序排列

第一趟:    6 8 1 4 5 3 7 2,考虑索引位置0

第二趟:    6 81 4 5 3 7 2,考虑索引位置0~1

第三题:   1 6 8 4 5 3 7 2,考虑索引位置0~2,在6和8之前插入1

第四趟:   1 4 6 8 5 3 7 2,重复以上过程直到序列被排序完成

第五趟:   1 4 5 6 8 3 7 2, 

第六趟:   1 3 4 5 6 8 7 2,

第七趟:   1 3 4 5 6 7 82,

第八趟:   1 2 3 4 5 6 7 8

void InsertionSort(int A[] int n ){

int i,j v;

for(int i=1;i<n;i++){

v=A[i];

j=i;

while(A[j-1]>v&&j>=1){

A[j]=A[j-1];

j--;

}

A[j]=v;

}

}

package paixu;
import java.util.*;
/**
 * Created by Administrator on 2017/9/29.
 */
public class ChaRupai {
    public static void InsterSort(int[] a){
        if(a!=null){
            for(int i=1;i<a.length;i++){
                int temp=a[i],j=i;
                if(a[j-1]>temp){
                    while(j>=1&&a[j-1]>temp){
                        a[j]=a[j-1];
                        j--;
                    }
                }
                a[j]=temp;
            }
        }
    }
    public static  void main(String[] args){
        int[] a={7,3,19,40,4,7,1};
        InsterSort(a);
        for(int i=0;i<a.length;i++){
            System.out.print(a[i]+" ");
        }
    }

}

性能:

最坏情况下时间复杂度:O(N*N)

最好情况下时间复杂度:O(N*N)

平均情况下时间复杂度:O(N*N)

最坏情况下空间复杂度:O(N*N)   O(1)辅助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值