MyDS 堆排序 通过cf
程序员文章站
2024-03-23 15:54:34
...
堆排序跑的很快,比sort()快一点点
//大根堆
void sift(int pos,int r,int a[]){
int j=pos*2,temp=a[pos];
while(j<=r){
if(j<r&&a[j]<a[j+1]) j++;
if(temp<a[j]) {
a[pos]=a[j];
pos=j;
j=j*2;
}
else break;
}
a[pos]=temp;
}
vector<int>v;
void heap_sort(int l,int r,int a[]){
for(int i=r/2;i>=l;i--) sift(i,r,a);
while(r){
v.push_back(a[1]);
a[1]=a[r];
sift(1,r-1,a);
r--;
}
}
上一篇: Android中使用Map实现相同Key不同Value
下一篇: 基于动态链表的“大整数加法运算器”
推荐阅读