01_02_选择排序(Selection Sort)

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

选择排序(Selection Sort)

选择排序(Selection Sort)介绍:

是一种简单的排序算法。它的原理是每次从待排序的元素中选择最小(或最大)的元素,将其放置在已排序序列的末尾,然后再从剩余的未排序元素中选择最小(或最大)的元素,以此类推,直到整个序列排序完成。

选择排序(Selection Sort)原理:
  1. 找到待排序序列中的最小(或最大)元素。
  2. 将最小(或最大)元素与待排序序列的第一个元素进行交换。
  3. 在剩余的未排序序列中,找到最小(或最大)元素,并将其与未排序序列的第一个元素进行交换。
  4. 重复上述步骤,直到整个序列排序完成。
Java 代码实现:
package com.algorithm.sort;

/**
 * 选择排序的原理可以描述如下:
 *
 *  1.找到待排序序列中的最小(或最大)元素。
 *  2.将最小(或最大)元素与待排序序列的第一个元素进行交换。
 *  3.在剩余的未排序序列中,找到最小(或最大)元素,并将其与未排序序列的第一个元素进行交换。
 *  4.重复上述步骤,直到整个序列排序完成。
 */

public class SelectionSort {

    /**
     * 选择排序算法实现
     * @param arr 待排序数组
     */
    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;
                }
            }
            // 交换 arr[i] 和 arr[minIndex] 的位置
            int temp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
        }
    }

    /**
     * 测试方法
     * @param args todo
     */
    public static void main(String[] args) {
        int[] arr = {64, 34, 25, 12, 22, 11, 90};
        selectionSort(arr);
        System.out.println("排序后的数组:");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}
代码简单解释:

在上述代码中,selectionSort 方法接受一个整数数组 arr 作为输入,并使用选择排序算法对其进行排序。main 方法中创建了一个示例数组 arr,并调用 selectionSort 方法进行排序。最后,打印排序后的数组结果。文章来源地址https://www.toymoban.com/news/detail-500177.html

程序执行结果:
排序后的数组:
11 12 22 25 34 64 90 
Process finished with exit code 0
备注:
  • 选择排序的时间复杂度为O(n^2),与冒泡排序相同。
  • 尽管选择排序在最好情况下的性能较好(与冒泡排序相比),但它仍然不适合大规模数据的排序任务。

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

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

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

相关文章

  • 【排序算法详细介绍】桶排序(Bucket Sort)冒泡排序(Bubble Sort)快速排序(Quick Sort)

    今天学习了一些简单的 排序算法 ,其实在我们平时解决问题中经常用到,今天正好一起看了看,记录一下。 如果对你也有帮助,我很开心~ 桶排序是一种排序算法,它将数组划分为一些 有序的桶 ,然后 每个桶再分别排序 。最后,将所有的桶合并起来,得到一个有序的数组。桶排

    2024年01月25日
    浏览(50)
  • C#中sort排序相关用法介绍

     C#中,List.Sort() 不仅为我们提供了默认的排序方法,还为我们提供了4种自定义排序的方法,通过默认排序方法,我们无需重写任何Sort()方法的实现代码,就能对单参数类型的List数据进行单一规则的排序,如果通过对这些方法进行改进我们可以轻松做到对多参数、多规则的复

    2024年02月15日
    浏览(60)
  • 【数据结构】常见排序算法——常见排序介绍、选择排序(直接选择排序、堆排序)交换排序(冒泡排序)

      选择排序是一种简单但不高效的排序算法,其基本思想是从待排序的数据中选择最小(或最大)的元素放到已排序的数据末尾。具体操作步骤如下: (1)找到数据中最小的元素,并把它交换到第一个位置; (2)在剩下未排序的元素中找到最小的元素,并把它交换到已排

    2024年02月04日
    浏览(56)
  • 选择排序算法介绍

    选择排序(Selection Sort)是一种简单直观的排序算法。它的基本思想是每次从待排序的元素中选取最小(或最大)的元素,放到已排序部分的末尾,直到全部元素排序完毕。 以下是选择排序的详细步骤: 首先,在待排序序列中找到最小(或最大)的元素,并将它与序列的第一

    2024年02月16日
    浏览(25)
  • python——机器学习:sklearn特征选择feature_selection

        特征选择是机器学习中很重要的一部分,构造并选取合适的特征,能极大的提高模型的表现。sklearn中feature_selection模块提供了一些特征选择方法。可以通过dir()的方法整体看一下。 0. 读取测试数据  1. 方差阈值法 VarianceThreshold         该方法筛选掉方差低于某个值的变量

    2024年02月19日
    浏览(50)
  • Unity 编辑器选择器工具类Selection 常用函数和用法

    点击封面跳转下载页面 在Unity中,Selection类是一个非常有用的工具类,它提供了许多函数和属性,用于操作和管理编辑器中的选择对象。本文将介绍Selection类的常用函数和用法,并提供相应的示例代码。 功能: 获取或设置当前活动的上下文对象。 示例代码: 功能: 获取或

    2024年02月14日
    浏览(47)
  • PAT甲级真题1171 Replacement Selection(置换选择) 双解法 带注释

    置换选择排序分析 手写小根堆 解法一:手写小根堆 模拟 解法二:双数组存储模拟 参考自

    2024年02月03日
    浏览(29)
  • 【数据结构】- 排序(详细介绍几种排序算法!!!*直接插入排序,*希尔排序,*选择排序,*堆排序,*冒泡排序,*快速排序,*归并排序)

    排序无处不在,所谓排序,就是使一串记录,按照其中的某个或某些的大小,递增或递减的排列起来的操作。 内部排序 :数据元素全部放在内存中的排序。 外部排序 :数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。 今天

    2024年01月20日
    浏览(62)
  • 【ARM 嵌入式 C 入门及渐进 10 -- 冒泡排序 选择排序 插入排序 快速排序 归并排序 堆排序 比较介绍】

    C语言中常用的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序。下面我们来一一介绍: 冒泡排序 (Bubble Sort):冒泡排序是通过比较相邻元素的大小进行排序。如果当前元素比下一个元素大,就交换它们两个的位置。重复这个过程直到最后,最

    2024年02月07日
    浏览(37)
  • sklearn.model_selection模块介绍

    train_test_split 参数包括: test_size:可选参数,表示测试集的大小。可以是一个表示比例的浮点数(例如0.2表示20%的数据作为测试集),或者是一个表示样本数量的整数。默认为None。 train_size:可选参数,表示训练集的大小。可以是一个表示比例的浮点数(例如0.8表示80%的数据

    2024年02月11日
    浏览(27)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包