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/
  • 相关阅读:
    datagrid
    IntelliJ IDEA for mac 引入js注意事项
    centos7安装并配置svn
    yum使用总结
    安装php
    类视图
    django里面添加静态变量
    Ubuntu16.04安装&创建虚拟环境
    制作dockerfile, 天眼查的镜像、并运行
    dockerfile
  • 原文地址:https://www.cnblogs.com/jiansen/p/7343870.html
Copyright © 2011-2022 走看看