数组和链表
使用数组意味着在内存中都是相连的(紧靠在一起的)。在数组中添加新元素也可能很麻烦。不过当需要随机读取元素时,数组的效率很高。
而链表中的元素可存储在内存的任何地方。链表的每个元素都存储了下一个元素的地址,从而使一系列随机的内存地址串在一起。因而链表的优势在插入元素方面。
选择排序
问题:假设你的计算机存储了很多乐曲。对于每个乐队,你都记录了其作品被播放的次数。你要将这个列表按播放次数从多到少的顺序排列,从而将你喜欢的乐队排序。该如何做呢?
选择排序代码:
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]))
小结
- 计算机内存犹如一大堆抽屉。
- 需要存储多个元素时,可使用数组或链表。
- 数组的元素都连在一起。
- 链表的元素是分开的,其中每个元素都存储了下一个元素的地址。
- 数组的读取速度很快。
- 链表的插入和删除速度很快。
- 在同一个数组中,所有元素的类型都必须相同(都为int、double等)。
小贴士
python strip()函数 介绍
声明:s为字符串,rm为要删除的字符序列
- s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符
- s.lstrip(rm) 删除s字符串中开头处,位于 rm删除序列的字符
- s.rstrip(rm) 删除s字符串中结尾处,位于 rm删除序列的字符
注意:
- 当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' ')
- 这里的rm删除序列是只要边(开头或结尾)上的字符在删除序列内,就删除掉
字符串的split用法
说明:Python中没有字符类型的说法,只有字符串,这里所说的字符就是只包含一个字符的字符串!!!
sizeof(参数) ,求的是占用的空间的,例如:
- sizeof("OK"),为3,是因为'O''K''\n',所以为3。
- sizeof(p);p是指针,所以为4。sizeof(p),这并不是求出p指向的内容,而是看p是指针,大小为4 ,因此得4(指针本身大小是4个字节(32位系统))
指针:用4个字节来存放指针变量。其存放的值就是一个地址。