1.遍历第一次,寻找最大值,并且记录最大值的索引max_index
2.list(dict,str)
思路:
(1) 每一遍检查将一个最大的元素交换到最后的位置,一些较大元素向右移动,前一个for循环控制第一层元素,从0到7,即range(len(lst)),第二个for循环从1到range(1,len(lst)-i)遍历。 (2)从左到右比较相邻元素,前一个元素较小就交换。 (3)如果原始待排序序列本身有序,可以提前退出排序,设置flag标志,为 true时,退出循环。例:
两种思路实现冒泡算法: 第一种: arr=[3,6,2,5,1,32,4,7,33,99] for i in range(len(arr)): for j in range(len(arr)): if arr[j] >arr[i]: arr[j], arr[i] = arr[i], arr[j] print arr 第二种: arr=[3,6,2,5,1,32,4,7,33,99] for i in range(1,len(arr)+1): for j in range(len(arr)-1): if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] print arr 第二种方法改进,加入flag标志: arr = [3,6,2,5,1,32,4,7,33,99] for i in range(1,len(arr)+1): flag = True # 插入变量flag,来发现该list是否有序. for j in range(len(arr)-1): if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] flag = False if flag: # 列表本来有序,故退出. break print arr冒泡排序的特点:
复杂度 O(n^2) 稳定性 切片:dict: 在python里是一种具体的数据结构
json: 是一种数据交换格式(标准)
原理:每次都取一个middle值,与start值与end值作比较,直至取出最终的值。
例:
# arr = [1, 2, 3, 5, 23, 43, 65, 87, 90, 111, 232, 345, 2342, 2432, 3453,] arr =range(10000) start = 0 end = len(arr) - 1 res = 345 # 此为要查找的值. count = 0 while True: count += 1 mid = (start + end) / 2 if res < arr[mid]: end = mid elif res > arr[mid]: start = mid else: print mid break print arr[mid], count 列表生成式:格式:
[x for x in 内容] [x for x in 内容 if 条件]例:
date = {"name": "yangbin", "age": 20, "sex": "male"} fields= ["name", "age", "sex"] print "---" print [date[fields] for fields in date]