前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >选择排序

选择排序

作者头像
Java架构师必看
发布2021-05-17 11:19:17
2930
发布2021-05-17 11:19:17
举报
文章被收录于专栏:Java架构师必看

选择排序

强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码

选择排序是一种简单直观的排序算法,其基本原理,对于一组记录的数据,通过第一次比较得到最小的记录,然后将该记录与第一条记录的位置交换;接着对不包含第一个以外的记录进行比较,得到最小记录并与第二个记录进行位置交换;重复该过程,知道进行比较的记录只有一个时为止。

以数组 {38,65,97,76,13,27,49} 为例:     13[65 97 76 38 27 49]     13 27[97 76 38 65 49]     13 27 38[76 97 65 49]     13 27 38 49[97 65 76]     13 27 38 49 65[97 76]     13 27 38 49 65 76[97]     13 27 38 49 65 76 97

【代码如下】:

代码语言:javascript
复制
/**
 * 选择排序
 */
public class SelectionSort {
    public static void main(String[] args) {
        Integer[] arr = {38,65,97,76,13,27,49};
        SelectionSort.sort(arr);
        System.out.printf(Arrays.asList(arr).toString());
    }
    public static void sort(Integer[] arr){
        int len = arr.length;
        int temp;
        for(int i=0;i<len-1;i++){
            for(int j=i+1;j<len;j++){
                if(arr[i] > arr[j]){
                    temp=arr[i];
                    arr[i]=arr[j];
                    arr[j]=temp;
                }
            }
        }
    }
}

【输出结果】:[13, 27, 38, 49, 65, 76, 97] 比较次数

O(n^2)
O(n^2)

,比较次数与关键字的初始状态无关,总的比较次数

N=(n-1)+(n-2)+...+1=n*(n-1)/2
N=(n-1)+(n-2)+...+1=n*(n-1)/2

。交换次数

O(n)
O(n)

,最好情况是,已经有序,交换0次;最坏情况交换

n-1
n-1

次,逆序交换

n/2
n/2

次。交换次数比冒泡排序少多了,由于交换所需 CPU 时间比比较所需的 CPU 时间多,n 值较小时,选择排序比冒泡排序快。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档