zoukankan      html  css  js  c++  java
  • java简单选择排序

    一、基本概念

          每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止。 

    二、实现思路

    1. 从待排序序列中,找到关键字最小的元素;
    2. 如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换;
    3. 从余下的 N - 1 个元素中,找出关键字最小的元素,重复(1)、(2)步,直到排序结束。

    三、代码实现

    public class SelectionSort {
    
        public static void selectionSort(int[] list){
            //需要遍历获得最小值的次数
            if (1>=list.length)return;
            for (int i=0;i<list.length-1;i++){
                int temp=0;
                int index=i;     //选择当前值为最小值索引
                for (int j=i+1;j<list.length;j++){
                    if (list[index]>list[j]){
                        index=j;  //修改最小值索引
                    }
                }
                
                temp=list[index];
                list[index]=list[i];
                list[i]=temp;
            }
        }
        public static void main(String[] args){
            int[] list={4,3,6,5,7,8,2,10,2,9};
            selectionSort(list);
            for (int num:list){
                System.out.print(num+" ");
            }
        }
    }

    四、时间复杂度

    • 简单选择排序的比较次数与序列的初始排序无关。 假设待排序的序列有 N 个元素,则比较次数总是N (N - 1) / 2。
    • 而移动次数与序列的初始排序有关。当序列正序时,移动次数最少,为 0.
    • 当序列反序时,移动次数最多,为3N (N - 1) /  2。
    • 所以,综合以上,简单排序的时间复杂度为 O(N2)。 
    转载请注明出处:http://www.cnblogs.com/jiansen/
  • 相关阅读:
    CVE-2017-10271
    [GKCTF2020]cve版签到
    [GXYCTF2019]禁止套娃 无参数RCE
    [护网杯 2018]easy_tornado
    记两道xctf上的web进阶区 反序列化
    msf卸载win defender
    Cron表达式详解
    Linux ifconfig只有lo没有别的网络的问题
    记一道文件上传
    【解决】手机安卓已经导入burp证书,但仍提示此证书并非来自被信任的机构
  • 原文地址:https://www.cnblogs.com/jiansen/p/7343870.html
Copyright © 2011-2022 走看看