c语言 链表选择排序,【每日算法】— 选择排序

"本文将介绍最基本的排序算法-选择排序"

在介绍选择排序法之前,我们首先来介绍一下两种数据类型:数组和链表。

640d86f4775c4e5d9bff697155546340.jpg

数组与链表

d816f34458c04829a6f905c263b2dfd1.jpg

上图中第一个数据类型是数组,数组是一个连续的数据序列,它们在内存中也是顺序存储的,所以在声明一个数组时,计算机就在内存空间中为它开辟了一片连续的内存空间,这也导致数组的存在是比较浪费内存的。

第二个数据类型是链表,链表中的一个元素由两部分组成,第一部分存放我们的数据;第二部分存放下一个数据在内存的位置,它是一个指针。

正是由于链表这样结构特点,链表在内存中的存储不必是连续的内存空间,因此链表的存储相对于数组来说更节省内存空间。

数组和链表中的每个元素都必须是相同的数据类型,例如每个元素都是int类型,因此数组和链表中每个元素所占的内存大小是一样的,又因为数组数据是连续存储的,因此我们知道了数组的第一个元素位置时,就能推算出数组中任何一个元素的位置;但链表不具备这样的特点。

423343993d924ccb9de536c19f0a7631.jpg

数组与链表的搜索方式

数组元素的搜索可以直接用下标法直接检索;而链表元素的搜索则要从头开始搜索,直至搜索到目标元素或遍历完整个链表。

ca3bfdead370454c914ab8000308aab7.jpg

元素插入

数组在进行元素插入时,需要将插入元素位置之前的所有元素都往前挪一个位置;而链表在进行元素插入时,只需要将插入位置前一元素的指针指向插入元素,将插入元素的指针指向插入位置的的后一位;所以执行插入操作时,链表的时间复杂度更小。

11fe897c30b24581bf399105c77aed2e.jpg

元素删除

今天的主角:选择排序算法,需要用到以后的知识点。

403653b9021e4e38bfa4716e89eb71bc.jpg

算法实现:

选择排序算法的思想就是遍历整个需要进行排序的列表,找到最大值(或最小值),并将其添加至另一新的列表中。

Play

show-136509.html

def find_smallest(arr):smallest=arr[0]smallest_index=0for i in range(1,len(arr)):if arr[i]

403653b9021e4e38bfa4716e89eb71bc.jpg

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值