摘要:
归并排序比较直观,设数组A被分为两部分A1和A2,并且A1和A2都是排好序的。那么每次比较A1和A2的头两个元素,把最大的(最小的)取出来,当A1或者A2中没有元素可取的时候,排序也就结束了。对于A1和A2的排序采用同样的方法。如果A1或者A2只含一个元素,则已经排好了序。复杂度:每次采用二分的办法划分数组,则T(n) = 2T(n/2) + n = nlog(n).归并排序的最好最坏复杂度均为 nlog(n). 阅读全文
posted @ 2011-10-05 20:59
哈哈开心
阅读(202)
评论(0)
推荐(0)
摘要:
快速排序是一个分治过程:对于数组A[p….r]选取A中的一个元素A(q),按照大小将A分成两部分 A[p…q-1] 和 A[q….r]其中 A[p…q-1] 中所有的元素都小于A(q),而 A[q….r]中所有元素都大于 A(q).对于划分后的数组依然采用同样的方法分裂。注意分裂后的数组可以为空,如此进行下去直到分裂后的元素不超过一个,这将所有的小数组合并在一起就是排好序的。递归算法如下:quicksort(A,p,r)if p<rthen q=partition(A,p,r)quicksort(A,p,q-1)quicksort(A,q,r)算法的关键是对数组的分裂,下面用图示显示分裂 阅读全文
posted @ 2011-10-05 00:01
哈哈开心
阅读(882)
评论(0)
推荐(0)