算法图解之数组与链表

本文深入探讨了数组和链表两种数据结构的特点,解析了它们在内存存储方式上的不同,以及如何影响数据的访问和操作效率。同时,详细介绍了选择排序算法的实现过程,展示了其在数据组织中的应用。

数组
数组是将元素连续存放的,由于每个元素所占的内存相同,可以通过下标迅速访问数组中任意元素。但是如果增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后再将要添加的元素放入其中。
数组的元素都在一起
数组的读取速度很快
数组支持随机访问
链表
链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系在一起,每个节点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点的指针。如果要访问列表中的元素,需要从第一个元素开始一直找到所需要元素的位置。但是增加和删除元素对于链表来说就简单了,只要修改元素的指针2就可以了。
链表的插入与删除很快。
链表元素是分开的,其中每个元素都存储了下一个元素的地址。
选择排序代码

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

def selectionSort(arr):
    newArr=[]
    for i in range(len(arr)):
        smallest=findSmallest(arr)
        newArr.append(arr.pop(smallest))
    return newArr
print (selectionSort([5,3,6,2,10]))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值