算法导论
永恒的秋天
Explorer
展开
-
线性时间的计数排序
#includeusing namespace std;int A[100],B[100],C[100];//A为原数组,B【n】为小于等于n的数的个数,C[n]为计数数组;int ANS[100];//排序后int main(){ int n,k,j=1; cin>>n>>k; for(int i=1;i { cin>原创 2017-03-19 17:17:59 · 211 阅读 · 0 评论 -
堆的使用及堆排序
#includeusing namespace std;#define N 100int a[109];void Headify(int A[],int i,int Size) //把以i为根的树变为最大堆,前提:i的左子树与右子树已经是最大堆。{ //if(i*2>Size)return; int Max=i; if(2*iA[i])Max=原创 2017-03-19 17:19:48 · 271 阅读 · 0 评论 -
期望时间O(n)的区间第k小
#includeusing namespace std;int a[106];int parti(int A[],int l,int r) //基于快排的划分。{ int now=l-1; for(int i=l;i { if(A[i] { int t; t原创 2017-03-19 17:21:36 · 295 阅读 · 0 评论 -
插入排序的实现
#includeusing namespace std;int main(){ int a[10]; for(int i=0;i int i,j,k,b,c,d,t; for(i=0;i cout for(i=1;i { for(j=i-1;j>=0;j--) {原创 2017-03-19 17:23:13 · 226 阅读 · 0 评论 -
二分搜索相关总结
1.数组中找一个数,找到返回1否则返回-1循环写法:#includeusing namespace std;int main(){ int a[100]; for(int i=1;i int left=2,right=51,mid,key=51; while(left { mid=left+right;原创 2017-03-27 15:36:35 · 212 阅读 · 0 评论 -
二叉搜索树的插入及查找结点
#includeusing namespace std;#define nil -99999999;struct node{ int key; node* left; node* right; node() { key=nil; left=NULL; right=NULL;原创 2017-03-23 20:40:33 · 492 阅读 · 0 评论