• 插入排序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; } }
  • 相关阅读:
    汇编语言 第二单元 整理
    iOS10推送必看UNNotificationServiceExtension
    RSA加,解密
    添加购物车动画
    长按移动cell
    http live streming
    修改工程
    searbar
    tableView 编辑模式
    iOS 3D touch
  • 原文地址:https://www.cnblogs.com/kangpp/p/4372959.html
Copyright © 2020-2023  润新知