【算法】选择排序算法原理及实现

简介: 【算法】选择排序算法原理及实现

1.什么是选择排序

  • 选择排序这种算法是一种较为简单直观的排序算法。
  • 这个算法的基本思想就是:首先在没有排序的数列里找出最小的元素,并把它放到这一组数列最开始的位置;
  • 接着就是把剩余没有排序的元素里继续寻找最小的元素,把它放在已经排序好的序列的后面
  • 依次类推,直到最后面把所有的元素都排序完。

2.选择排序算法图解

  • 有7个数组组成的无序数列 :8,2,6,4,3,7,5 希望从小到大排。


75e95c5dfcd0446ba7ae8c1d82691352.jpg

  • 根据选择排序算法的实现思路来完成排序

64412b0a3d3b4ebfbc7a17c4007b0a28.jpg

d5113021fbd54d26952745d549ee2fd8.jpg

3.选择排序编码实现

(1)整体代码实现

/**
 * 选择 排序算法
 */
public class SelectSort {
    public static void main(String[] args) {
        int[] arr = {8,2,6,4,3,7,5};
        System.out.println("排序前:");
        System.out.println(Arrays.toString(arr));
        selectSort(arr);
        System.out.println("排序后:");
        System.out.println(Arrays.toString(arr));
    }
    public static void selectSort(int[] arr){
        //从第一个元素开始循环,每次比较都会 把最小的放在当前循环的元素上
        for (int i = 0;i<arr.length-1;i++){
            //记录当前元素的index
            int index = i;
            //开始从当前元素的下一个元素进行比较,直至比较到末尾
            for (int j = index+1; j < arr.length; j++) {
                //如果发现后面的元素比当前记录的index索引小的话就将数值小的索引付给index
                //直至循环结束,得到最小元素的索引下表
                if(arr[j]<arr[index]){
                    index=j;
                }
            }
            //拿到最小index之后,就进行数据交换
            //先判断下我们找到的最小的index 和当前元素的索引是不是相等的
            //如果是相等就不在进行交换,说明当前索引的元素就是最小值
            if(index!=i){
                int temp=arr[i];
                arr[i]=arr[index];
                arr[index]=temp;
            }
            System.out.print("第"+(i+1)+"轮:");
            System.out.println(Arrays.toString(arr));
        }
    }
}

(2)测试结果

8e38200f3dc8486994bdd89dc4ea66af.jpg

相关文章
|
3月前
|
数据采集 机器学习/深度学习 算法
|
29天前
|
存储 算法 Java
解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用
在Java中,Set接口以其独特的“无重复”特性脱颖而出。本文通过解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用。
41 3
|
1月前
|
机器学习/深度学习 算法 机器人
多代理强化学习综述:原理、算法与挑战
多代理强化学习是强化学习的一个子领域,专注于研究在共享环境中共存的多个学习代理的行为。每个代理都受其个体奖励驱动,采取行动以推进自身利益;在某些环境中,这些利益可能与其他代理的利益相冲突,从而产生复杂的群体动态。
171 5
|
8天前
|
算法 容器
令牌桶算法原理及实现,图文详解
本文介绍令牌桶算法,一种常用的限流策略,通过恒定速率放入令牌,控制高并发场景下的流量,确保系统稳定运行。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
令牌桶算法原理及实现,图文详解
|
18天前
|
负载均衡 算法 应用服务中间件
5大负载均衡算法及原理,图解易懂!
本文详细介绍负载均衡的5大核心算法:轮询、加权轮询、随机、最少连接和源地址散列,帮助你深入理解分布式架构中的关键技术。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
5大负载均衡算法及原理,图解易懂!
|
24天前
|
算法 数据库 索引
HyperLogLog算法的原理是什么
【10月更文挑战第19天】HyperLogLog算法的原理是什么
41 1
|
30天前
|
机器学习/深度学习 人工智能 算法
[大语言模型-算法优化] 微调技术-LoRA算法原理及优化应用详解
[大语言模型-算法优化] 微调技术-LoRA算法原理及优化应用详解
70 0
[大语言模型-算法优化] 微调技术-LoRA算法原理及优化应用详解
|
1月前
|
搜索推荐 Shell
解析排序算法:十大排序方法的工作原理与性能比较
解析排序算法:十大排序方法的工作原理与性能比较
51 9
|
1月前
|
算法 搜索推荐
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
本文介绍了冒泡排序、选择排序和插入排序三种基础排序算法的原理、实现代码和测试结果。
17 0
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
|
1月前
|
搜索推荐 Java Go
深入了解选择排序算法
深入了解选择排序算法
20 4