选择排序

数组和链表

①链表:
链表中的元素可以存储在内存的任何地方,每个元素都存储了下一个元素的地址,使内存地址串在一起。使用链表时,不需要移动元素,在插入元素方面有优势。
需要读取链表最后一个元素时,不能直接读取,必须先访问#1从而获取#2的地址,直到访问最后一个元素,在需要读取所有元素的时候,链表的效率很高,但如果要跳跃,效率很低。
②数组:
使用数组意味着所有代办事项在内存中都是相连的,缺点:额外请求的位置可能根本用不上,浪费内存。但需要随机读取元素时,数组的效率很高,因为可以迅速找到数组的任何元素。

运行时间

①链表读取O(n),插入O(1),删除O(1)
②数组读取与插入和链表相反,删除O(n)

在中间插入

①使用链表时,插入元素很简单,只要它前面的那个元素指向的地址,而使用数组,所有的元素都要向后移。链表最好。

删除

①链表更好,因为只需要修改前一个元素指向的地址,而使用数组,删除元素后,后面的元素必须向前移。
②删除总能成功,插入若内存无足够的空间,会失败。

使用多的是什么

①数组更多,因为支持随机访问。有两种访问方式:随机访问和顺序访问。
顺序意味着从1-n逐个读取,链表只顺序访问。

找出数组中最小元素

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

def selectionsort(arr):
    newarr=[]
    for i in range(len(arr)):
        smallest=finsmallest(arr)
        newarr.append(arr.pop(smallest))
        return newarr
print(selectionsort([5,3,2,1,4]))

小结

①计算机内存如抽屉
②需要存储多个元素,使用数组或者链表
③数组的元素都在一起
④链表的元素是分开的,其中每个元素都存储了下一个元素的地址
⑤数组的读取速度更快
⑥链表的插入和删除速度很快
⑦在同一个数组中,所有元素类型必须相同

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值