选择排序 selectionSort

它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。

public class 选择排序 {
    public static void main(String[] args){
        int[] a={4,1,2,8,6,7};
        selectionSort(a);
        for (int i = 0; i <a.length; i++) {
            System.out.print(a[i]+" ");
        }
    }
    public static void selectionSort(int[] arr){
       if (arr==null||arr.length<2){ //如果数组为空或者长度为小于等于1
            return;
        }
        for(int i=0;i<arr.length-1;i++){
            int minindex=i;  //假设当前最小的是i
            for(int j=i+1;j<arr.length;j++){ //比较i之后的数字和i位置的数字的大小,得到最小索引
                if (arr[j]<arr[minindex])
                minindex=j;
            }
            swap(arr,i,minindex);//将最小的值与i位置的值进行交换
        }
    }
    //交换数组array上,ab两个位置的值
    public static void swap(int [] array,int a,int b){ //a,b为数组下标
        int temp=array[a];
        array[a]=array[b];
        array[b]=temp;
    }
}

选择排序的细节讲解与复杂度分析 时间复杂度O(N^2),额外空间复杂度O(1)

选择排序和冒泡排序的区别:

主要在于交换方式
冒泡法每次比较和移动相邻的两项 ;选择排序每次交换当前项和第n项 。

总的来说,两种排序比较的次数是相同的 但是选择排序更快一点

冒泡排序是每一次都可能要交换 ;而选择排序是在比较时记下最小索引的位置最后来交换

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 排序(上):为什么插入排序比冒泡排序更受欢迎? 排序对于任何一个程序员来说,可能都不会陌生。你学的第一个算法,可能...
    GhostintheCode阅读 3,388评论 4 27
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,235评论 0 52
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 1,287评论 0 2
  • 排序的基本概念 在计算机程序开发过程中,经常需要一组数据元素(或记录)按某个关键字进行排序,排序完成的序列可用于快...
    Jack921阅读 1,472评论 1 4
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    zwb_jianshu阅读 1,252评论 0 0