【视频+图文+动画】详解选择排序(轻松易理解系列)

一、视频讲解选择排序

本期视频有图文专栏||【视频+图文+动画】详解选择排序

点击这里去B站观看视频~

二、选择排序的思想

思想:(注:n为数组长度)

第一次交换中:

  • 假定最小数是arr[0]
  • 从arr[1]-arr[n-1]找最小值与arr[0]交换。
  • 交换过后arr[0]位置上的数确定

第二次交换中:

  • 假定最小数是arr[1],
  • 从arr[2]-arr[n-1]找最小值与arr[1]交换。
  • 交换过后arr[1]位置上的数确定

以此类推…

三、选择排序的动画演示及思路分析

动画演示:

  • 粉色的数字:假定的最小值,
  • 绿色的数字:需与假定最小值比较的数,
  • 橘色的数字:位置固定的数字【位置一旦固定,不参与下次排序】
    在这里插入图片描述

思路分析:

以7,3,22,15,8为例:n为数组长度

1.第一次交换:3的位置被固定

  • 粉色的数字:假定的最小值,
  • 绿色的数字:需与假定最小值比较的数,
  • 橘色的数字:位置固定的数字【位置一旦固定,不参与下次排序】

(1)假定最小数arr[0]即min=arr[0]=7

(2) 从arr[1]-arr[n-1]找最小值(即从【3,22,15,8】找最小值)与arr[0]交换。

min=7和arr[1]=3比较: 若min>arr[1],min=arr[1],进行下一次比较

  • 因为7>3
  • 所以min=arr[1]=3
  • 进行下一次比较

7 3 22 15 8 ⇒7 3 22 15 8

min=3和arr[2]=22比较:若min>arr[2],min=arr[2],进行下一次比较

  • 因为3<22
  • 所以min=arr[1]=3
  • 进行下一次比较

7 3 22 15 8 ⇒7 3 22 15 8

min=3和arr[3]=15比较:若min>arr[3],min=arr[3],进行下一次比较

  • 因为3<15
  • 所以min=arr[1]=3
  • 进行下一次比较

7 3 22 15 8 ⇒7 3 22 15 8

min=3和arr[4]=8比较: 若min>arr[4],min=arr[4],结束第一轮比较

  • 因为3<8
  • 所以min=arr[1]=3

7 3 22 15 8 ⇒7 3 22 15 8

此时找到了【3,22,15,8】中的最小值:3

所以arr[0]=7和arr[1]=3交换位置

(3)交换过后arr[0]=3位置上的数确定:7 3 22 15 8 ⇒ 3 7 22 15 8

在这里插入图片描述
2.第二次交换:7的位置被固定

  • 粉色的数字:假定的最小值,

  • 绿色的数字:需与假定最小值比较的数,

  • 橘色的数字:位置固定的数字【位置一旦固定,不参与下次排序】

(1)假定最小数arr[1]即min=arr[1]=7

(2) 从arr[2]-arr[n-1]找最小值(即从【22,15,8】找最小值)与arr[1]交换。

min=7和arr[2]=22比较:若min>arr[2],min=arr[2],进行下一次比较

  • 因为7<22
  • 所以min=arr[1]=7
  • 进行下一次比较

3 7 22 15 8 ⇒ 3 7 22 15 8

min=7和arr[3]=15比较:若min>arr[3],min=arr[3],进行下一次比较

  • 因为7<15
  • 所以min=arr[1]=7
  • 进行下一次比较

3 7 22 15 8 ⇒ 3 7 22 15 8

min=3和arr[4]=8比较: 若min>arr[4],min=arr[4],结束第一轮比较

  • 因为3<8
  • 所以min=arr[1]=3

3 7 22 15 8 3 7 22 15 8

此时因为 【22,15,8】 中的数都大于 min=arr[1]=7

所以最小值:min=arr[1]=7

(3)本轮不发生交换 arr[1]=7位置上的数确定3 7 22 15 8⇒ 3 7 22 15 8

在这里插入图片描述
3.第三次交换:8的位置被固定

  • 粉色的数字:假定的最小值,

  • 绿色的数字:需与假定最小值比较的数,

  • 橘色的数字:位置固定的数字【位置一旦固定,不参与下次排序】

(1)假定最小数arr[2]即min=arr[2]=22

(2) 从arr[3]-arr[n-1]找最小值(即从【15,8】找最小值)与arr[2]交换。

min=22和arr[3]=15比较:若min>arr[3],min=arr[3],进行下一次比较

  • 因为22>15
  • 所以min=arr[3]=15
  • 进行下一次比较

3 7 22 15 8 ⇒ 3 7 22 15 8

min=15和arr[4]=8比较: 若min>arr[4],min=arr[4],结束第一轮比较

  • 因为15>8
  • 所以min=arr[4]=8

3 7 22 15 83 7 22 15 8

此时找到了【22,15,8】中的最小值:8

所以arr[2]=22和arr[4]=8交换位置

(3)交换过后arr[2]=8位置上的数确定 3 7 22 15 8⇒ 3 7 8 15 22

在这里插入图片描述
4.第四次交换:15的位置被固定

  • 粉色的数字:假定的最小值,

  • 绿色的数字:需与假定最小值比较的数,

  • 橘色的数字:位置固定的数字【位置一旦固定,不参与下次排序】

(1)假定最小数arr[3]即min=arr[3]=15

(2) 从arr[4]-arr[n-1]找最小值(即从【22】找最小值)与arr[3]交换。

min=15和arr[4]=22比较: 若min>arr[4],min=ar

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值