摘要: 堆排序#!/usr/bin/pythonimport sysdef left_child(node): return node * 2 + 1def right_child(node): return node * 2 + 2def parent(node): if (node % 2): return (i - 1) / 2 else: return (i - 2) / 2def max_heapify(array, i, heap_size): l = left_child(i) r = right_child(i) l... 阅读全文
posted @ 2012-06-05 18:35 Mingxx 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 理论不多说:#!/usr/bin/pythonimport sysdef merge(array, q, p, r): left_array = array[q:p+1] right_array = array[p+1:r+1] left_array_num = len(left_array) right_array_num = len(right_array) i, j , k= [0, 0, q] while i < left_array_num and j < right_array_num: if (left_array[i] < ri... 阅读全文
posted @ 2012-06-05 18:33 Mingxx 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 学习一门计算机语言是好是写写代码。算法插入算法实现:#!/usr/bin/pythondef insert_sort(array): for i in range(1, len(array)): key = array[i] j = i - 1 while j >= 0 and key < array[j]: array[j + 1] = array[j] j-=1 array[j + 1] = key if __name__ == "__main__": ... 阅读全文
posted @ 2012-06-05 18:31 Mingxx 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 主要分为两个子算法,PARTITION(A, p, r)以A[r]为基准对数组进行一个划分,比A[r]小的放在左边,比A[r]大的放在右边。QUICKSORT(A, p, r)是快速排序的子程序,调用划分程序对数组进行划分,然后递归地调用QUICKSORT(A, p, r),以完成快速排序的过程。快速排序的最差时间复杂度为O(n2),平时时间复杂度为O(nlgn)。最差时间复杂度的情况为数组基本有序的时候,平均时间复杂度为数组的数值分布较为平均的时候。在平时情况下快速排序跟堆排序的时间复杂度都为O(nlgn),但是快速排序的常数项较小,所以要优于堆排序。PARTITION(A, p, r).. 阅读全文
posted @ 2012-06-05 18:27 Mingxx 阅读(2710) 评论(0) 推荐(1) 编辑