选择排序(Selection Sort)

这篇具有很好参考价值的文章主要介绍了选择排序(Selection Sort)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

选择排序(Selection Sort)

简介

选择排序(Selection Sort)是一种简单直观的排序算法,每次从未排序部分选择最小(或最大)的元素放置到已排序部分的末尾。

算法步骤

选择排序算法的步骤如下:

  1. 从未排序部分选择最小(或最大)的元素。
  2. 将选中的元素与未排序部分的第一个元素交换位置。
  3. 标记该元素为已排序部分的末尾。
  4. 重复步骤1-3,直到所有元素都被排序。

示例代码

下面是使用Java实现选择排序的示例代码:文章来源地址https://www.toymoban.com/news/detail-569320.html

public class SelectionSort {
    public static void selectionSort(int[] arr) {
        int n = arr.length;
        for (int i = 0; i < n - 1; i++) {
            int minIndex = i;
            for (int j = i + 1; j < n; j++) {
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;
                }
            }
            // 交换最小元素和当前位置的元素
            int temp = arr[minIndex];
            arr[minIndex] = arr[i];
            arr[i] = temp;
        }
    }
}

// 示例用法
public class Main {
    public static void main(String[] args) {
        int[] arr = {5, 2, 8, 1, 3};
        SelectionSort.selectionSort(arr);
        System.out.println("排序结果:");
        for (int num : arr) {
            System.out.print(num + " ");
        }
    }
}
在上述代码中,我们定义了一个SelectionSort类和一个Main类。SelectionSort类中的selectionSort函数接受一个整数数组作为参数,并使用嵌套的循环来实现选择排序。在Main类中,我们创建一个示例数组,调用SelectionSort.selectionSort方法对数组进行排序,并打印排序结果。

示例演示
下面是一个示例演示选择排序算法的执行过程:

初始数组:[5, 2, 8, 1, 3]

第一轮选择:[1, 2, 8, 5, 3]
第二轮选择:[1, 2, 8, 5, 3]
第三轮选择:[1, 2, 3, 5, 8]
第四轮选择:[1, 2, 3, 5, 8]

排序完成:[1, 2, 3, 5, 8]

到了这里,关于选择排序(Selection Sort)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 排序算法(stable_sort(), sort())

    sort函数我相信大家都不陌生,今天介绍一个新的排序算法stable_sort stable_sort:稳定排序算法,维持相等元素的原有顺序。 假如我们定义一个字符串数组 这些字符串是按照字典序排列的,我们现在想要words按照单词长度从小到大重排的同时,还希望具有相同长度的元素按照字典

    2024年02月07日
    浏览(54)
  • 【排序算法】堆排序(Heap Sort)

    堆排序是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 学习堆排序之前,有必要了解堆!若读者不熟悉堆,建议先了解堆(建议可以通过二叉堆,左倾堆,

    2024年02月01日
    浏览(70)
  • Java-三个算法冒泡-选择排序,二分查找

    Java算法: 冒泡排序; 解析:将前后两个数对比,将大的数(或小的)调换至后面,每轮将对比过程中的最大(或最小)数,调到最后面。每轮对比数减一;初始对比数为数组长度-1. 选择排序: 解析:选择第一个数依次与其他元素对比,数值小的或(大的)交换位置至前方(

    2024年02月11日
    浏览(41)
  • 46,排序算法sort

    排序算法sort 常用排序算法 sort 学习目标: 掌握i常用排序算法 算法简介: sort //对容器内元素进行排序 random_shuffle //洗牌,指定范围内的元素随机调整次序 merge //容器元素合并,并存储到另一容器中 reverse //反转指定范围的元素 功能描述: 对容器内元素进行排序 函数原型:

    2024年02月16日
    浏览(41)
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序,堆排序】超详细~~

    目录 冒泡排序(BubbleSort): 代码详解:  冒泡排序的优化:  选择排序(SelectSort): 代码详解:  插入排序(InsertSort): 代码详解:  希尔排序(ShellSort):  法一(交换法)代码详解:  法二(移位法--插入排序的优化)代码详解: 快速排序(QuickSort):  代码详解:  归并排

    2024年02月20日
    浏览(48)
  • 【算法】桶排序(Bucket Sort)详解

    桶排序(Bucket Sort)又称箱排序,是一种比较常用的排序算法。其算法原理是将数组分到有限数量的桶里,再对每个桶分别排好序(可以是递归使用桶排序,也可以是使用其他排序算法将每个桶分别排好序),最后一次将每个桶中排好序的数输出。 桶排序的思想就是把待排序

    2024年01月24日
    浏览(43)
  • C++(15): STL算法:排序(sort)

            std::sort 是 C++ 标准库 algorithm 中提供的一个函数,用于对容器(如数组、向量等)中的元素进行排序。它基于比较操作对元素进行排序,通常使用高效的排序算法,如快速排序、归并排序或堆排序等。         在实际应用中,std::sort 通常会根据输入数据的大

    2024年04月12日
    浏览(35)
  • 算法 - 归并排序(Merge_sort)

    目录 什么是归并排序(Merging_sort)? 归并排序的适用场景: 演示归并排序的过程(默认arr和brr两个数组都是有序的): 代码实现: 如果我们事先并没有分配好两个已经排序好的数组,而是直接的一个无序序列呢? 代码实现: 在写归并排序的代码之前,我们先对归并排序的定义

    2024年02月13日
    浏览(49)
  • 算法 - 快速排序(Quick_sort)

    目录 什么是快速排序? 快速排序的使用场景: 演示快速排序的过程: 第一趟排序: 第二趟排序: 通过代码来实现:  对快速排序的总结: 在写快速排序的代码之前,我们先对快速排序的排序原理以及定义进行梳理: 快速排序(Quick_sort)是对冒泡排序的一种改进,它也是

    2024年02月10日
    浏览(43)
  • python算法 之 快速排序(Quick Sort)

    时间复杂度 名称 示例算法 O(1) 常数时间复杂度 哈希表查找 O(logn) 对数时间复杂度 二分查找 O(n) 线性时间复杂度 遍历数组 O(nlogn) 线性对数时间复杂度 快速排序 O(n^2) 平方时间复杂度 冒泡排序、插入排序 O(n^3) 立方时间复杂度 矩阵乘法 O(2^n) 指数时间复杂度 穷举搜索 O(n!) 阶

    2024年02月04日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包