选择排序

本章是对选择排序的分析和实现过程

《Java数据结构与算法》中的例子

棒球队员按身高从矮到高站队

生活中与程序规则的对比可以参考冒泡排序一章
冒泡排序


不同的是选择排序相对与冒泡排序,会省去很多元素交换时带来的开销

  1. 棒球队员开始站队之前,规定存在一个记牌器用于记录最矮队员现阶段的站位
  2. 开始两两人员进行比较,以0号队员为记牌器起点号码,当后面出现比其矮的队员,则在记牌器上替换下号码,但并不做位置交换
  3. 继续比较时则按照记牌器中现阶段存在的号码为基点,继续比较,以此类推
  4. 队列从头到尾比较完一趟时,记牌器上现存号码则是最矮队员号码
  5. 这时进行队员位置交换,最矮队员被排在了队伍最前面,这位队员则成为已排序的不变量
  6. 下一轮比较则忽略他,以后一位位置上的队员为记牌器起点号码,重复上述操作,知道排序完成
    在这里插入图片描述

代码实现过程

首先

老样子,先提供出数组的构造和生成随机值、打印元素的方法,为逐步分析做准备

/**
 * @author: DonHear
 * @since: 2021-01-29 16:36
 * @Description:
 * @version: 1.0.0
 */
public class SelectSort {
   
    private final long[] a;
    //指针(索引)体现数组a中实际元素个数
    private int nElems;
    //构造函数:当对象初始化后,指针(索引)也随之初始化
    public SelectSort(int max){
   
        a = new long[max];
        nElems = 0;
    }
    public static void main(String[] args) {
   
        //声明数组大小
        SelectSort selectSort = new SelectSort(10);
        //生成20个随机元素
        selectSort.goRandom(10);
        //打印数组元素
        selectSort.display();
    }
    /**
     * 元素交换
     * @param one
     * @param two
     */
    private void swap(int one,int two){
   
        long temp = a
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值