2018-07-18

排序算法之选择排序

基本思想

选择排序算法的基本思想是:首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。再次,在剩下的元素中找到最小的元素,将它和数组的第二个元素交换位置。如此重复,直到将整个数组排序。

代码实现

package sortdemo;

public class SelectSort {
    public static void main(String[] args){
        int[] arr = {3,0,6,5,7,4,9,8,1};
        System.out.println("排序之前:");
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+" ");
        }
        selectSort(arr);
        System.out.println();
        System.out.println("排序之后:");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
    public static void selectSort(int[] arr){
        for(int i=0;i<arr.length;i++){
            int min = i;
            for(int j=i+1;j<arr.length;j++)
                if(arr[j]<arr[min]) min=j;//交换arr[i]和arr[min]
            swap(arr,min,i);
        }
    }
    public static void swap(int[] arr,int a,int b){
        int temp = arr[a];
        arr[a]=arr[b];
        arr[b]=temp;
        
    }

}

复杂度

选择排序的时间复杂度:简单选择排序的比较次数与序列的初始排序无关。假设待排序的序列有N个元素,则比较次数永远都是N(N-1)/2。而移动次数与序列的初始排序有关。当序列正序时,移动次数最少,为0。当序列反序时,移动次数最多,为3N(N-1)/2。综上,简单选择排序的时间复杂度为O(N^2)。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 排序的基本概念 在计算机程序开发过程中,经常需要一组数据元素(或记录)按某个关键字进行排序,排序完成的序列可用于快...
    Jack921阅读 5,362评论 1 4
  • 1 初级排序算法 排序算法关注的主要是重新排列数组元素,其中每个元素都有一个主键。排序算法是将所有元素主键按某种方...
    深度沉迷学习阅读 5,371评论 0 1
  • 一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这...
    Winterfell_Z阅读 11,426评论 0 13
  • 从今天起,早睡。10.30。这是个任务,必须完成。
    小懒神阅读 1,094评论 0 0
  • 昨天晚上,我们一家人回家的路上,我的大宝跟我说“妈妈,长大了以后,我想买一辆越野” “好的” “那越野贵吗?” 我...
    庄艳阅读 4,408评论 0 1

友情链接更多精彩内容