zoukankan      html  css  js  c++  java
  • 插入排序JAVA实现

    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; } }
  • 相关阅读:
    IE设置代理后登录QQ再关闭代理仍然可以使用QQ
    ubuntu14.04下Qt开发环境搭建遇到的问题
    CButtonST使用技巧: CButtonST简介
    springboot webapi 支持跨域 CORS
    服务注册和发现 Eureka
    开发框架 springBoot
    springBoot springCloud
    springBoot 微服务
    springBoot AOP环绕增强、自定义注解、log4j2、MDC
    springBoot 热部署
  • 原文地址:https://www.cnblogs.com/kangpp/p/4372959.html
Copyright © 2011-2022 走看看