当前位置: 首页 > wzjs >正文

2022最新国内新闻50条简短seo网络营销课程

2022最新国内新闻50条简短,seo网络营销课程,建设银行在上海的招聘网站,一搜个人网站制作简单选择排序是一种基础的排序算法,其主要思想是:从待排序的序列中不断地选择最小(或最大)的元素,然后将其放到序列的起始(或末尾)位置。下面是其具体实现逻辑: 算法步骤 1. 整体思…

简单选择排序是一种基础的排序算法,其主要思想是:从待排序的序列中不断地选择最小(或最大)的元素,然后将其放到序列的起始(或末尾)位置。下面是其具体实现逻辑:


算法步骤

1. 整体思路

选择排序的基本思想是将一个无序数组分成两部分:

  • 已排序部分:最开始为空,随着排序进行逐步扩展。
  • 未排序部分:最开始为整个数组,随着每一轮选择最小值后,该部分会逐步缩小。

在每一轮排序中,从未排序部分中选出最小(或最大)的元素,将其与未排序部分的第一个元素交换,确保该位置的元素正确放置。

2. 详细步骤

(1) 初始化

  • 输入:一个包含 n 个元素的数组 arr
  • 目标:使 arr 按照从小到大的顺序排列。

(2) 外层循环(遍历每个待排序位置)

  • 范围:下标从 0 到 n-2。

    • 说明:最后一个元素无需再排序,因为在前面所有元素都已有序后,剩下的最后一个元素必定已排好序。
  • 步骤

    1. 假设当前下标 i 位置的元素为未排序部分的最小值。
    2. 用一个变量(例如 min_index)记录这个位置,即 min_index = i

(3) 内层循环(寻找未排序部分的最小值)

  • 范围:下标从 i+1 到 n-1。

    • 说明:内层循环的目的是在剩余未排序的元素中找出最小值。
  • 步骤

    1. 遍历从 j = i+1j = n-1 的每个元素。
    2. 对每个 arr[j],与当前记录的最小值 arr[min_index] 进行比较:
      • 如果 arr[j] < arr[min_index],则更新 min_index = j,即找到了更小的元素。
    3. 内层循环结束后,min_index 就指向了未排序部分的最小值所在的位置。

(4) 交换操作

  • 判断与交换
    1. 判断:如果 min_index 不等于 i,说明在未排序部分找到了比 arr[i] 更小的元素。
    2. 交换:将 arr[i]arr[min_index] 的元素进行交换,将最小值放到当前位置 i
    3. 如果 min_index 等于 i,说明当前位置已经是未排序部分中最小的元素,无需交换。

(5) 迭代结束

  • 重复步骤 (2)~(4) 直到外层循环结束,即所有位置都已确定。

3. 以示例数组说明

假设数组为 [64, 25, 12, 22, 11],下面是排序的详细过程:

  1. 第1轮(i = 0)

    • 初始:假定 min_index = 0(元素 64)。
    • 内层循环比较:
      • 25 与 64 比较 → 更新 min_index 为 1。
      • 12 与 25 比较 → 更新 min_index 为 2。
      • 22 与 12 比较 → 12 仍然最小,min_index 保持 2。
      • 11 与 12 比较 → 更新 min_index 为 4。
    • 交换:将下标 0 与下标 4 的元素交换,数组变为 [11, 25, 12, 22, 64]
  2. 第2轮(i = 1)

    • 初始:假定 min_index = 1(元素 25)。
    • 内层循环比较:
      • 12 与 25 比较 → 更新 min_index 为 2。
      • 22 与 12 比较 → 12 仍然最小。
      • 64 与 12 比较 → 12 仍然最小。
    • 交换:将下标 1 与下标 2 的元素交换,数组变为 [11, 12, 25, 22, 64]
  3. 第3轮(i = 2)

    • 初始:假定 min_index = 2(元素 25)。
    • 内层循环比较:
      • 22 与 25 比较 → 更新 min_index 为 3。
      • 64 与 22 比较 → 22 仍然最小。
    • 交换:将下标 2 与下标 3 的元素交换,数组变为 [11, 12, 22, 25, 64]
  4. 第4轮(i = 3)

    • 初始:假定 min_index = 3(元素 25)。
    • 内层循环比较:
      • 64 与 25 比较 → 25 仍然最小。
    • 无需交换,因为 min_index 与 i 相等,数组保持 [11, 12, 22, 25, 64]
  5. 第5轮(i = 4)

    • 此时只剩一个元素,不需要再排序。

注意细节

  • 最小值记录:
    在每一趟排序中,需要维护一个变量(例如 min_index)来记录当前遍历中发现的最小值所在的索引。

  • 遍历范围的变化:
    每次内层循环的起始下标随着外层循环的进行而递增。例如,第 1 次内层循环遍历下标 0 到 n-1;第 2 次从下标 1 到 n-1;依次类推。这样保证了前面的部分始终是已排序好的。

  • 交换操作:
    只有当最小元素的位置与当前起始位置不同的时候才进行交换操作,以减少不必要的赋值。


示例代码(Python)

下面是一个简单的 Python 实现例子:

def selection_sort(arr):n = len(arr)# 遍历每个位置for i in range(n):min_index = i  # 假设当前位置的元素为最小# 从 i+1 到 n-1 查找最小元素for j in range(i+1, n):if arr[j] < arr[min_index]:min_index = j# 如果最小元素不是当前元素,则交换if min_index != i:arr[i], arr[min_index] = arr[min_index], arr[i]return arr# 示例使用
sample_list = [64, 25, 12, 22, 11]
sorted_list = selection_sort(sample_list)
print(sorted_list)  # 输出: [11, 12, 22, 25, 64]

算法复杂度

  • 时间复杂度:
    外层循环执行 n 次,内层循环分别执行 n-1、n-2 … 1 次,总体比较次数为 O(n²)

  • 空间复杂度:
    选择排序是原地排序算法,不需要额外的存储空间(除了用于交换的临时变量),因此空间复杂度为 O(1)


总结

简单选择排序的核心在于每一次找到剩余元素中的最小值,并将其交换到当前排序区域的末尾。虽然该算法时间复杂度较高(O(n²)),但其逻辑简单、实现容易,对于数据量较小或者对性能要求不高的场景是个不错的选择。

http://www.dtcms.com/wzjs/597432.html

相关文章:

  • 网站制作最新技术的建设银行青海省分行门户网站
  • 在电脑上做网站的软件一个网页的制作
  • 怎么在视频网站做淘宝客网站建站管
  • 网站开发建设专业的公司怎样备份wordpress
  • 网站模块在线制作教程网页设计摘要
  • 公司网站建设小江wordpress 微信登录插件下载
  • 网站维护的内容有哪些婚纱摄影网站建设公司
  • 哪个网站做浏览器主页好石家庄哪里有做网站
  • 天津网站优化方案设计素材网址
  • 网站卡片设计重庆公司注册代理
  • 濉溪建设投资网站做艺术文字的网站
  • 开封专业做网站公司搭建本地网站环境
  • 景区网站的作用wordpress字体选择
  • 做淘宝推广开网站合适做网站哪个行业比较有前景
  • 沈阳什么行业做网站的最多软文发稿平台
  • 域名后 wordpress网站优化是外包还是自己做
  • 镇江网站建设活动方案慕枫网站建设
  • 网站建设怎么制作模板企业管理培训课程机构
  • 做地方门户网站怎样电商网站排名
  • 上海网站域名备案处免费seo网站推广在线观看
  • 可以做哪些网站有哪些内容吗做淘宝浏览单的网站
  • 服务行业网站建设广州市建设工程交易网
  • 网站开发安全性分析重庆付费网站推广
  • 网站编辑的岗位职责广西住房和城乡建设厅网站首页
  • 石家庄免费建站电商平台是什么
  • 重庆网站建设开发wordpress去掉评论邮箱
  • 湖北专业网站建设设计做网站工作
  • 聊城集团网站建设索尼电视网页浏览器
  • 网站是怎么做的吗荆门建网站费用
  • 求邯郸网站制作浙江同安建设有限公司网站