
算法导论
文章平均质量分 53
寻找心灵境地
这个作者很懒,什么都没留下…
展开
-
插入排序
Insert_sort(int arry[],int n) { int i,key; for(int j=1;j { key=A[j]; i=j-1; while(i>=0&&A[i]>key) //找到key的插入位置 { A[i+1]=A[i]; i=i-1; } A[i+1]=key; } }原创 2013-09-25 20:06:26 · 451 阅读 · 0 评论 -
归并排序
#include using namespace std; const max=100000000; void Merge(int arry[],int low,int mid,int high) { int n1,n2; int L[100],R[100]; n1=mid-low+1; n2=high-mid; for(int i=0;i<n1;i++) L[i]=arry[lo原创 2013-09-25 20:58:59 · 429 阅读 · 0 评论 -
堆排序
#include using namespace std; void Max_heapify(int arry[],int n,int i) //以i为根的树调整为大根堆 { int l=2*i+1; int r=2*i+2; int largest,tmp; if(larry[i]) largest=l; else largest=i; if(rarry[largest])原创 2013-09-27 14:50:41 · 415 阅读 · 0 评论 -
逆序对的个数
对于数组A[1...n],若有iA[j],则对偶(i,j)称为A的一个逆序对。求数组中逆序对个数,很简单的思路是每个数和后面的数比较,这样需要(n^2)的时间,如果采用归并排序的思想最坏情况下需要O(nlgn)。 1.分解A[low...mid]和A[mid+1...high] 2.求解 3.合并,数组A[low...mid]和A[mid+1...high]分别都是有序的,设置两个指针,i指原创 2013-09-25 21:53:09 · 764 阅读 · 0 评论