排序算法
Daci_xie
呵呵
展开
-
堆排序——python
堆排序: 数据结构——堆,具有如下性质: parent(i): math.floor(i/2) left(i): 2*i right(i): 2*i+1 堆可分为,最大堆(A[ parent(i) ] >= A[ i ])和最小堆(A[ parent(i) ] <= A[ i ])。一...原创 2018-03-06 19:00:51 · 343 阅读 · 0 评论 -
基数排序——python
基数排序:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。def RadixSort(input_list): def MaxBit(input_list): max_data = max(input_list) bits_...转载 2018-03-08 18:31:06 · 816 阅读 · 0 评论 -
插入排序
插入排序:顺序提取,正确插入。类似于“抓扑克牌”,右手抓牌,左手排序。插排对于部分有序的数组十分高效,也很适合小规模的数组。def insert_Sort(alist): for j in range(1, len(alist)): key = alist[j] i = j - 1 while i>=0 and ali...原创 2018-03-03 20:38:53 · 206 阅读 · 0 评论 -
选择排序
选择排序: 递增选取,顺序摆放。 先选出序列中最小的,排在第一位;再选出剩余序列内最小的,排在第二位;以此类推,实现顺序。 两个特点:运行时间与输入无关;数据移动是最少的。 选择排序需要(N^2/2)次比较和(N)次交换。def select_sort(alist): for i in range(len(ali...原创 2018-03-03 21:19:07 · 1090 阅读 · 0 评论 -
冒泡排序——python
冒泡排序: 比较相邻记录,发现相邻的逆序就交换他们。如“石沉大海”一般。def bubbleSort(alist): for i in range(len(alist)-1, 0, -1): for j in range(i): if alist[j]>alist[j+1]: alist[j], a...原创 2018-03-04 17:45:12 · 168 阅读 · 0 评论 -
快速排序——python
快速排序: 基本思想:以key值为分割点,左边比key小,右边比key大。再左右两边递归。 具体步骤如下:(严格按照如下步骤实现)def quick_sort(a, low, high): i = low j = high if i >= j: return a key = a[i] while i <...原创 2018-03-04 18:47:08 · 168 阅读 · 0 评论 -
归并排序——python
归并排序: 分治(divide and conquer)。def mergeSort2(alist): if len(alist) < 2: return alist middle = len(alist)//2 left = mergeSort2(alist[:middle]) right = mergeSort2(alist[...原创 2018-03-04 19:44:40 · 305 阅读 · 0 评论