排序算法——选择排序法(Select Sorting)

2023-05-16

选择排序(Select Sorting)

基本介绍

​ 选择排序也属于内部排序法,是从预排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的

选择排序思想

​ 选择排序(Select Sorting)也是一种简单的排序方法。它的基本思想是:第一次从arr[0]~arr[n-1]中选出最小值,与arr[0]交换,第二次从arr[1]~arr[n-1]中选取最小值,与arr[1]交换,···,第i次从arr[i-1]~arr[n-1]中选取最小值与arr[i-1]交换,总共哦通过 n-1 次,得到一个从小到大排列的有序序列

规则

  1. 选择排序一共有 数组大小-1 轮排序
  2. 每一轮排序,又是一个循环
  3. 先假定当前这个数是最小数
  4. 然后和后面的每个数进行比较,如果发现有比当前数更小的数,就重新确定最小数,并得到下标
  5. 当遍历到数组的最后时,就得到本轮最小数和下标
  6. 交换

代码示例

package com.crisp.Sort;

import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

public class SelectSort {
    public static void main(String[] args) {
//        int[] arr = {3,5,1,2,4,0,-1,9,8,7,0};
//        print(arr);
//        Select(arr);
//        print(arr);

        //创建有100000个数据的数组
        int[] arr = new int[100000];
        for(int i = 0; i < arr.length; ++i){
            arr[i] = (int)(Math.random() * 100000);//生成一个[0,100000)的随机数
        }
        System.out.printf("原始数组为:");
        print(arr);
        Date data1 = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String data1Str = simpleDateFormat.format(data1);
        Select(arr);
        Date data2 = new Date();
        String data2Str = simpleDateFormat.format(data2);
        print(arr);
        System.out.printf("排序过后数组为:");
        System.out.printf("排序前的时间是:%s\n",data1Str);
        System.out.printf("排序后的时间是:%s\n",data2Str);
    }

    //打印输出
    public static void print(int[] arr){
        System.out.println(Arrays.toString(arr));
    }

    //选择排序法 从小到大
    public static void Select(int[] arr){
        int minIndex;
        int temp;
        for(int i = 0; i < arr.length-1; ++i){
            minIndex = i;
            for(int j = i; j < arr.length-1; ++j){
                if(arr[minIndex] > arr[j+1]){
                    minIndex = j+1;
                }
            }
            temp = arr[minIndex];
            arr[minIndex] = arr[i];
            arr[i] = temp;
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

排序算法——选择排序法(Select Sorting) 的相关文章

随机推荐

  • Reverse Linked List

    本题是反转一个单链表 xff0c 题目提示使用迭代和递归两种方式 xff0c 属于比较基础的题目 一 迭代方式 xff1a 总体思路是从左到右遍历链表结点 xff0c 依次反转连接关系 每次处理相邻的两个结点 xff0c 从 lt None
  • angularJS1笔记-(17)-ng-bind-html指令

    angular不推荐大家在绑定数据的时候绑定html 但是如果你非要这么干也并不是不可以的 举个例子 xff1a lt DOCTYPE html gt lt html lang 61 34 en 34 gt lt head gt lt me
  • 旧电脑diy文件服务器,2021旧电脑自制NAS存储变废为宝.docx

    amp tid 61 13992 amp page 61 1 amp extra 61 pid15059 amp tid 61 13992 amp page 61 1 amp extra 61 pid15059 旧电脑自制NAS存储变废为宝
  • Druid 连接池 JDBCUtils 工具类的使用

    Druid工具介绍 它不仅仅是一个数据库连接池 xff0c 它还包含一个ProxyDriver xff0c 一系列内置的JDBC组件库 xff0c 一个SQL Parser 支持所有JDBC兼容的数据库 xff0c 包括Oracle MyS
  • matlab练习程序(简单图像融合)

    通过本篇和上一篇的结合 xff0c 应该就能做出拉普拉斯图像融合了 这里用的方法很简单 xff0c 就是用模板和两个图像相乘 xff0c 然后对处理后的两个图像再相加就可以了 拉普拉斯融合就是对金字塔的每一层图像做这样的操作 xff0c 然
  • Ext.grid.Panel表格分页

    Ext grid Panel表格分页示例 代码 xff1a cshtml 64 Layout 61 null lt DOCTYPE html gt lt html gt lt head gt lt title gt Ext grid Pan
  • Build a Multiple Choices Cascader by ant-design-vue

    Preface I need to make a cascader which can support multiple choices However I didn 39 t find any ui which supports that
  • SpringBoot使用LibreOffice转换PDF

    用LibreOffice将Office文档转换PDF 本例使用 LibreOffice 6 0 4 jodconverter 4 2 0 spring boot 1 5 9 RELEASE 在CentOS7 43 openJDK8 和 Wi
  • 史上最全面的Neo4j使用指南

    Neo4j图形数据库教程 Neo4j图形数据库教程 第一章 xff1a 介绍 Neo4j是什么Neo4j的特点Neo4j的优点 第二章 xff1a 安装 1 环境2 下载3 开启远程访问4 测试 第三章 xff1a CQL 1 CQL简介2
  • 5-ipv6基础知识之-域名解析dns

    DNS域名解析过程比较简单 xff0c 先看下IPV4下面的DNS xff0c 然后再看IPV6下面的DNS 1 IPv4 DNS 1 1 IPv4 DNS请求过程 在电脑上面ping www taobao com xff08 如果已经访问
  • sql中set命令解析

    1 SET ANSI DEFAULTS ON OFF 将一组与 SQL Server 的运行环境有关的选项设置为 SQL 92 标准 2 SET ANSI NULL DFLT OFF ON OFF 当数据库选项 ANSI null defa
  • 软件项目开发,交付文档(全)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 作为一个软件项目负责人 xff0c 这些文档的编写是必须懂的 这里列出软件项目开发 xff0c 交付时文档的文档供大家参考 模板的话需要一个个文档去研究 xff0c 以后做
  • 修改Docker容器字符编码为-zh_CN.UTF-8中文字符集

    版本记录 2019 4 26日 第一版 问题描述 公司的java项目中使用了openoffice和pdf2html对文件进行格式转换 xff0c word xff0c ppt xff0c pdf文件都转换没有问题 xff0c 唯独excel
  • @GetMapping和@PostMapping接收参数的格式

    一 1 使用 64 Controller 注解 xff0c 在对应的方法上 xff0c 视图解析器可以解析return 的jsp html页面 xff0c 并且跳转到相应页面 若返回json等内容到页面 xff0c 则需要加 64 Resp
  • Python 3 教程二:文件,目录和路径

    1 遍历文件夹和文件 import os import os path os os path里包含大多数文件访问的函数 所以要先引入它们 请按照你的实际情况修改这个路径 rootdir 61 34 d download 34 for par
  • [BZOJ1925]地精部落

    地精部落 题目描述 传说很久以前 xff0c 大地上居住着一种神秘的生物 xff1a 地精 地精喜欢住在连绵不绝的山脉中 具体地说 xff0c 一座长度为N的山脉H可分为从左到右的N段 xff0c 每段有一个独一无二的高度Hi xff0c
  • 【C#学习笔记】类构造函数使用

    using System namespace ConsoleApplication class stu private string name private int age public stu name 61 34 34 age 61
  • VS2010(VS2008)下安装配置OpenCV

    研究生课题做嵌入式图像处理方向 xff0c 所以主要涉及的知识就是嵌入式Linux 43 OpenCV 43 QT xff0c 主要OpenCV和QT都是跨平台的 xff0c 而且充分利用好的话再后期的算法设计和功能扩展上就方便很多 只是之
  • iOS开发基础篇--CAShapeLayer的strokeStart和strokeEnd属性

    一 案例演示 最近有一个小需求 xff0c 就是要做一个圆形进度条 xff0c 大概样子如下 xff1a 1 gif 在不知道有CAShapeLayer的strokeStart和strokeEnd属性的时候 xff0c 我采取的方法就是实时
  • 排序算法——选择排序法(Select Sorting)

    选择排序 xff08 Select Sorting xff09 基本介绍 选择排序也属于内部排序法 xff0c 是从预排序的数据中 xff0c 按指定的规则选出某一元素 xff0c 再依规定交换位置后达到排序的目的 选择排序思想 选择排序