简介:二分查找法又被称为折半查找法,用于预排序的查找问题
过程:
优劣:
简介:两两比较大小,如果不满足升序关系,则交换
过程:略
优劣::
简介:找出最小值,然后放入一个新的列表中
过程:略
优劣::
简介:依次检查需要排序的列表,每次取出一个元素放入另一个排好序的列表中的适当位置。
过程:略
优劣::
简介:分而制之的思想
过程:
劣::速度较快且稳定,时间复杂度为O(Nlog2N)
实现代码:
def merge(left,right):
merged = []
i,j = 0,0
left_len,right_len = len(left),len(right) while i<left_len and j<right_len: if left[i] <= right[j]:
merged.append(left[i])
i += 1
else:
merged.append(right[j])
j += 1
merged.extend(left[i:])
merged.extend(right[j:]) return mergeddef mergeSort(a): if len(a) <= 1: return a else: mid = len(a) // 2
left = mergeSort(a[:mid]) right = mergeSort(a[mid:]) merge(left,right) return merge(left,right)def main():
a = [59,12,77,64,72,69,46,89,31,9]
a1 = mergeSort(a)
print(a1)if __name__ == '__main__': main()
简介:对冒泡排序的改进
过程:
优劣::
内置数据类型list的方法sort(),内置函数sorted()
这个的底层实现就是归并排序,只是使用了Python无法编写的底层实现,从而避免了Python本身附加的大量开销,速度比我们自己写的归并排序要快很多(10~20倍),所以说我们一般排序都尽量使用sorted和sort