首页 > 代码库 > 选择类排序:选择排序,堆排序
选择类排序:选择排序,堆排序
选择类排序:1:简单选择排序O(n^2),空间O(1) 2:堆排序O(n乘以log以2为底,n的对数),空间复杂度O(1) //选择排序 void SelectSort(int R[],int n) { int i,j,k; int tmp; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) { if(R[j]<R[k]) k=j; } if(k!=i) { tmp=R[i]; R[i]=R[k]; R[k]=tmp; } } } //堆排序 void sift(int R[],int low,int high) { int i=low,j=2*i; int tem=R[i]; while(j<=high) { if(j<high && R[j]<R[j+1])//孩子最大的给双亲 j++; if(tmp<R[j]) { R[i]=R[j]; i=j; //以孩子为双亲,继续向下探索 j=2*i; } else break; } R[i]=tmp; } void HeapSort(int R[],int n) { int i; int tmp; for(i=n/2;i>=1;i--)//循环建立初始堆 sift(R,i,n); for(i=n;i>=2;i--) { tmp=R[1]; R[1]=R[i]; R[i]=tmp; sift(R,1,i-1); } }
选择类排序:选择排序,堆排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。