• 选择排序


    package DataStructure;

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;

    /**
    * Created by robert on 2016/12/17.
    * 选择排序
    */
    public class SelectionSort {

    /**
    * 找最小元素下标
    * @param nums 数组
    * @param sIndex 开始下标
    * @return
    */
    public static int findMinimumIndex(int[] nums,int sIndex){
    int minimumIndex = sIndex;
    for(int i=sIndex+1;i<nums.length;i++){
    if(nums[minimumIndex]>nums[i]){
    minimumIndex=i;
    }
    }
    return minimumIndex;
    }

    public static void selectSort(int[] nums){
    int mininumIndex = 0;
    for(int i=0;i<nums.length-1;i++){
    mininumIndex = findMinimumIndex(nums,i);
    if(nums[mininumIndex]!=nums[i]){
    int temp = nums[i];
    nums[i] = nums[mininumIndex];
    nums[mininumIndex] = temp;
    }
    }
    }

    /**
    * 生成乱序数组
    * @param n
    * @return
    */
    private static int[] createArr(int n){
    List<Integer> list = new ArrayList<Integer>(n);
    for(int i=1;i<=n;i++){
    list.add(i);
    }
    Collections.shuffle(list);
    int[] nums = new int[n];
    for(int i=0;i<nums.length;i++){
    nums[i] = list.get(i);
    }
    System.out.println("初始化数组结束");
    // printArr(nums);
    return nums;
    }

    private static void printArr(int[] numArr) {
    for(int num:numArr){
    System.out.print(num+",");
    }
    System.out.println();
    }

    public static void main(String[] args) {
    int[] numArr = createArr(10000);
    long startTime = System.nanoTime();
    selectSort(numArr);
    System.out.println("共计耗时:"+String.valueOf(System.nanoTime()-startTime));
    // printArr(numArr);
    }

    }
    不管数组中元素的初始化顺序是什么,都是O(n²)
    10000个数字排序需要耗时29284920纳秒
  • 相关阅读:
    STM32寄存器的简介、地址查找,与直接操作寄存器
    SPI初始化寄存器配置
    docker 命令
    SpringBoot接口格式和规范
    算法
    RabbitMQ
    UML概念
    activeMQ和JMS
    设计模式七大原则
    redis缓存
  • 原文地址:https://www.cnblogs.com/mengjianzhou/p/6189640.html
Copyright © 2020-2023  润新知