摘要:数组、链表的原理、优缺点,算法2:选择排序
1、说说内存的工作原理?
(1)内存:就像很多抽屉的集合体,每个抽屉都有地址,fe0ffeeb是一个内存单元的地址
(2)将数据存储到内存时,请求计算机提供空间,计算机给你一个存储地址。需要存储多项数据时,有两种存储方式:数组、链表。
2、说说数组的原理?
4个人去看电影,以数组的形式将4个人存储在座位上。要求:4个人必须连着,如果再来一个人,就得重新找有5个连着的空位。当然,你可以预留10个位置。但超过10人,你还得找位置。
3、链表的原理?
第一人知道第二人的位置,第二人知道第三人的位置,依次类推。可存在内存的任何位置,插入元素非常方便。
4、数组、链表的优缺点?
(1)数组存储方式:可以高效率的读取元素。链表存储方式:可以高效率的插入、删除元素
如果你找最后一个元素,链表你得一个一个,一直找到最后一个。数组找到第一个,直接就跳到最后一个了
(2)数组用的多,它支持随机访问。很多情况都要求能够随机访问。
5、算法2:选择排序
(1)第一种(从小到大):
# 感谢某某大佬,学习到了
def sort_list(list):
for i in range(len(list)-1):
min_sub = i
for n in range(len(list) -i):
if list[min_sub] > list[n+i]:
min_sub = n+i
list[i], list[min_sub] = list[min_sub], list[i]
return list
if __name__ == '__main__':
a = sort_list([23, 5, 0, 78, 56, 55, 77, 8, 2])
print(a)
(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
a = selectionSort([2, 3, 6, 5, 10])
print(a)