首页 > 其他分享 >排序-选择排序

排序-选择排序

时间:2024-06-11 09:03:33浏览次数:25  
标签:minIndex arr 元素 选择 let 序列 排序

学习目标:

  • 掌握选择排序

学习内容:

  1. 基本思想
  2. 时间复杂度
  3. 动画演示
  4. 代码

基本思想:

  • 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
  • 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
  • 重复上一步,直到所有元素均排序完毕。

时间复杂度:O(n^2)


动画演示:

<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="KdV5LFsH-1718067020770" src="https://live.csdn.net/v/embed/397769"></iframe>

选择排序


代码

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>选择排序</title>
</head>

<body>
  <script>
    function selectSort(arr) {
      for (let i = 0; i < arr.length; i++) {
        let minIndex = i
        for (let j = i + 1; j < arr.length; j++) {
          if (arr[j] < arr[minIndex]) {
            minIndex = j
          }
        }
        //交换i和最小值
        [arr[i], arr[minIndex]] = [arr[minIndex], arr[i]]
      }
      return arr

    }
    let arr = [8, 5, 7, 2, 1, 4, 3]
    arr = selectSort(arr)
    console.log(arr)
  </script>

</body>

</html>

标签:minIndex,arr,元素,选择,let,序列,排序
From: https://blog.csdn.net/m0_64105917/article/details/139584532

相关文章

  • 排序-快速排序
    学习目标:掌握快速排序学习内容:基本思想动画演示代码时间复杂度基本思想:从数列中挑出一个元素,称为”基准“。重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面。重复上一步,直到所有元素均排序完毕。分区动画演示:快速排序......
  • 微信小程序开发中的图片选择与上传
    微信小程序开发中的图片选择与上传是一个常见的功能需求,本文将通过详细的代码案例来介绍如何实现图片选择与上传功能。图片选择首先,我们需要在小程序中引入一个选择图片的控件,这可以通过<button>标签来实现。在点击按钮时,触发选择图片的事件,并将选择的图片保存到一个数组中。......
  • 冒泡排序(C语言)
    一.冒泡排序的原理冒泡排序的原理是:从左到右,相邻元素进行比较,以升序为例,第1次遍历将最大的数沉底。经过n次遍历这组元素以升序排列->第1次遍历,两个相邻的数比较大小,若左边的数大于右边的数,则两个元素交换位置,反之,继续向后比较,当第1次遍历结束之后该组元素最大的数就被移动......
  • 每日一题(LeetCode 34题,在排序数组中查找元素的第一个和最后一个元素)
    题目:给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1,-1]。你必须设计并实现时间复杂度为 O(logn) 的算法解决此问题示例1:输入:nums=[5,7,7,8,8,10],......
  • 常用排序
    1冒泡排序(BubbleSort)时间复杂度:\(O(n^2)\)voidmp()//自定义mp()函数{for(inti=1;i<=n-1;i++){for(intj=1;j<=n-i;j++){if(a[j]>a[j+1])//相邻元素比较,若逆序则交换(升序为左大于右,降序反之){sw......
  • PyQT5之QSS基础/子控件选择器
    fromPyQt5.QtWidgetsimport*importsysclassBasicQCSS(QWidget):def__init__(self):super().__init__()self.setWindowTitle("QSS样式/子控件选择器")btn1=QPushButton(self)btn1.setText("按钮1")b......
  • 在Linux中,如何选择 Linux 操作系统版本?
    选择Linux操作系统版本时,您需要考虑多个因素来确保所选版本能够满足您的特定需求。以下是一些关键的考虑点:目的和经验水平:新手用户:如果刚开始接触Linux,建议选择用户友好的发行版,如Ubuntu、Mint或Kubuntu。这些系统提供了良好的图形界面,丰富的软件库,以及活跃的社区支持,非常适......
  • 排序 - 归并排序(Merge Sort)
    将两个的有序数列合并成一个有序数列,我们称之为"归并"。归并排序(MergeSort)就是利用归并思想对数列进行排序。归并排序介绍从下往上的归并排序从上往下的归并排序归并排序实现从上往下的归并排序从下往上的归并排序归并排序的时间复杂度和稳定性归并排序时间复杂度归......
  • 归并排序(Merge_sort)
    归并排序:归并的意思是将两个数组合成为一个,而归并排序就是:将一个数组分为许多个,让多个数组按大小归并,直到归并为一个;基本思想为:将一个数组拆分为许多个两两结合的数组,然后逐步排序主要函数是将两个分开的数组排序成一个数组,需要两个指针指向两个数组开头,每次排列进去最小的......
  • css选择器,盒子模型,定位,动画
    css返回到Java开发知识汇总目录1.基本选择器标签选择器:标签名字类选择器:.classnameid选择器:#2.层次选择器后代选择器:bodyp子选择器,1代,所有的p:body>p兄弟相邻选择器:.classname+p只选择当前相邻的下一个元素通用兄弟选择器:.classname~p选中当前......