算法笔记【6】-简单选择排序算法

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

一、基本原理

在排序算法中,简单选择排序是一种基本且直观的排序方法。尽管它的性能较冒泡排序稍好,但仍然属于较慢的排序算法。本文将详细介绍简单选择排序算法的原理、步骤,并讨论其优缺点。
简单选择排序是一种寻找最小值的有效策略,通过不断选择剩余元素中的最小值,并与当前位置进行交换,逐步构建有序数组。具体而言,它遍历整个数组,在每次遍历中找到未排序部分的最小值,然后将该最小值与当前遍历位置的元素进行交换。

二、实现步骤

以下是简单选择排序算法的实现步骤:

  • 遍历整个数组,设第i个位置为当前最小元素。
  • 在剩余未排序部分中找到最小值,并记录最小值的位置。
  • 将最小值与第i个位置元素交换。
  • 重复上述步骤,直到整个数组排序完成。
    以数组[79,88,70,37,92,6,28,54]为例,其排序流程如下图所示。
    算法笔记【6】-简单选择排序算法,排序算法,算法,笔记,matlab,学习

代码示例 以下是使用matlab编写的简单选择排序算法示例代码:

  • 简单选择排序算法函数
%% 简单选择排序函数
function sortedArray = selectionSort(array)
    % 获取数组的长度
    n = length(array);
    
    % 外循环,遍历整个数组
    for i = 1:n-1
        % 假设当前位置的元素为最小值
        minIndex = i;
        
        % 内循环,在当前位置之后的元素中寻找最小值
        for j = i+1:n
            if array(j) < array(minIndex)
                minIndex = j;
            end
        end
        
        % 将找到的最小值与当前位置交换
        temp = array(i);
        array(i) = array(minIndex);
        array(minIndex) = temp;
    end
    
    % 返回排序后的数组
    sortedArray = array;
end
  • 调用
clc;
clear;
arr = [79,88,70,37,92,6,28,54];
%% 快速排序函数调用
sortedArr= selectionSort(arr);
disp("***********简单选择排序*****************************");
disp("排序前的数组:");
disp(arr);
disp("排序后的数组:");
disp(sortedArr);
  • 结果
    算法笔记【6】-简单选择排序算法,排序算法,算法,笔记,matlab,学习

三、优缺点分析

优点:

  • 简单选择排序是一种稳定的排序算法,相同元素的相对位置不会改变。
  • 实现简单直观,代码量较少。
  • 空间复杂度为O(1),不需要额外的空间开销。

缺点:

  • 简单选择排序的时间复杂度为O(n2),在大规模数据上效率较低。
  • 不适用于部分有序的数组,性能与数组初始状态无关。

结论:
尽管简单选择排序算法在实际应用中很少使用,但它具有直观而易懂的实现方式,对于初学者来说是理解和熟悉基本排序算法的良好起点。然而,在面对大规模数据时,我们通常更倾向于选择其他高效的排序算法,如快速排序、归并排序等。了解简单选择排序的原理和特点,对于扩展知识面、深入理解排序算法的设计思想仍然是非常有价值的。文章来源地址https://www.toymoban.com/news/detail-733853.html

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

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

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

相关文章

  • 【算法】算法学习二:链表 & 数组 & 选择排序

    链表和数组是常见的数据结构,用于组织和存储数据。它们在内部实现和使用方式上有一些显著的区别。 数组是一个连续的内存块,用于存储相同类型的元素。数组的每个元素通过索引访问,索引从0开始。数组的主要特点包括: 随机访问:由于数组的元素在内存中是连续存

    2024年02月06日
    浏览(80)
  • 扎实打牢数据结构算法根基,从此不怕算法面试系列之010 week02 01-01 最简单的排序算法-选择排序法的设计思想

    接下类,我们学习另外一类非常基础的算法,即排序算法。 排序算法是计算机科学领域研究的非常深入的一类算法,排序这个动作本身也是非常重要的, 很多时候面对无需的数据,首先需要做的就是对他们进行排序。 排序算法——目的:让数据有序。 排序算法——种类:种

    2023年04月21日
    浏览(58)
  • 数据处理 | Matlab实现Lichtenberg算法的机器学习数据选择

    效果一览 基本介绍 Matlab实现Lichtenberg算法的机器学习数据选择 Lichtenberg算法适用于回归和分类数据集,并根据数量和最大覆盖范围选择最佳算法。Lichtenberg算法(Lichtenberg algorithm,LA)是由Pereira等人于2021年提出的一种新型智能优化算法,它是受闪电传播这一物理现象启发而产

    2024年02月16日
    浏览(51)
  • 各种排序算法学习笔记

    Docs https://r0dhfl3ujy9.feishu.cn/docx/XFlEdnqv9oCEoVx7ok8cpc4knnf?from=from_copylink 如果你认为有错误,欢迎指出!

    2024年02月01日
    浏览(34)
  • 算法基础学习笔记——①排序

    ✨ 博主:命运之光 ✨ 专栏: 算法基础学习 前言: 算法学习笔记记录日常分享,需要的看哈O(∩_∩)O,感谢大家的支持! 因为x参与交换之后仍然会被留在左右区间中的一个里。 1.确定分界点:(这里的分界点不一定是x,可以随意取值,常用取值方法如下) q[l],q[(l+r)/2],q[r],随机

    2024年02月07日
    浏览(50)
  • 从零开始学习 Java:简单易懂的入门指南之查找算法及排序算法(二十)

    ​ 也叫做顺序查找 ​ 说明:顺序查找适合于存储结构为数组或者链表。 基本思想 :顺序查找也称为线形查找,属于无序查找算法。从数据结构线的一端开始,顺序扫描,依次将遍历到的结点与要查找的值相比较,若相等则表示查找成功;若遍历结束仍没有找到相同的,表

    2024年02月10日
    浏览(44)
  • 【8 排序】简单选择排序。

    顺序表: 单链表:

    2024年02月10日
    浏览(23)
  • C++简单排序——选择排序

    今天我们来学习一种新的排序方法——选择排序。 上一次我们学习了一种简单的排序——冒泡排序。 但有的人啊,他就是说:“冒泡排序太难记了!换一种!” 于是, 无敌天才  我决定发一下我认为最好记的排序之一——选排。 选择排序:选出一个作为基本位置,然后再

    2024年02月06日
    浏览(21)
  • 冒泡排序 简单选择排序 插入排序 快速排序

    bubblesort 两个for循环,从最右端开始一个一个逐渐有序 selectsort 假设是升序,两个for循环,从最左端开始一个一个逐渐有序,找到lengh-1个无序区的最小值 insertsort 两个for循环,从最左端开始一个一个逐渐有序,默认第一个就是有序区,第一个for遍历无序区,第二个for循环遍历

    2024年02月13日
    浏览(46)
  • 排序算法:选择排序(直接选择排序、堆排序)

    朋友们、伙计们,我们又见面了,本期来给大家解读一下有关排序算法的相关知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏: C语言:从入门到精通 数据结构专栏: 数据结构 个  人  主  页 : stackY、   目录 前言: 1.选择

    2024年02月09日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包