• 排序算法-选择排序-插入排序


    1、选择排序

      1) 循环所有元素,找到最小元素的下标

      2) 最小元素下标和当前元素互换位置  

    public Integer[] selectionSort(Integer[] arr,Integer n){
    //循环数组所有元素
    for(int i =0; i<n;i++){
    //标记当前元素最小
    Integer temp = arr[i];
    int minIndex =i;
    //循环获取最小元素下标
    for(int j = i+1;j<n;j++){
    if(arr[j].compareTo(arr[i])<0) {minIndex = j;temp=arr[j];}
    }
    //交换元素
    arr[minIndex] = arr[i];
         arr[i]=temp;
    }
    return arr;
    }
    java语言,如果是自定义的数据结构,需要重写类中的compareTo方法自定义比较数据

    2、插入排序
     
      1)依次循环所有元素,判断每个元素和之前的元素大小,进行交换    
    //插入排序
    public Integer[] insertSort(Integer[] arr,Integer n){
    //循环所有元素
    for(int i = 0; i < n; i++){
    //判断前一个元素是否大于当前元素,如果大于,进行交换
    for(int j = i; j>0; j--){
    Integer temp = arr[j];
    if(arr[j].compareTo(arr[j-1])<0){
    arr[j] = arr[j-1];
    arr[j-1]=temp;
    }
    else break;
    }
    }
    return arr;
    }

      2)优化插入排序,复制代替交换
     
    //插入排序优化
    public Integer[] insetSortCopy(Integer[] arr, Integer n){
    //遍历所有元素
    for(int i = 0;i<n;i++){
    //记录终止的位置,要插入的位置
    int j;
    //变量当前的元素
    Integer t = arr[i];
    //依次向前覆盖
    for(j = i;j>0 && arr[j-1]>t;j--){
    if(arr[j]<arr[j-1]) arr[j] = arr[j-1];
    }
    arr[j] = t;
    }
    return arr;
    }

    插入排序的速度,对于有序的数据,排序速度非常快。




  • 相关阅读:
    Handler
    declare-styleable的使用
    Android APK反编译就这么简单 详解(附图)
    webview与js交互
    Android 开源框架ActionBarSherlock 和 ViewPager 仿网易新闻客户端
    eclipse中的.project 和 .classpath文件的具体作用
    android:关于主工程和library project
    block,inline和inline-block概念和区别
    容易被忽略CSS特性
    CSS里常见的块级元素和行内元素
  • 原文地址:https://www.cnblogs.com/wind-man/p/10810019.html
Copyright © 2020-2023  润新知