堆排序 感觉忘了实现一遍
来源:互联网 发布:广播电视台和广电网络 编辑:程序博客网 时间:2024/06/08 09:32
void heapAdjust(int a[],int s,int n)
{
int largest=s;
if(2*s<n&&a[2*s]>a[s])largest=2*s;
if(2*s+1<n&&a[2*s+1]>a[largest])largest=2*s+1;
if(largest==s) return ;
else {
swap(a[s],a[largest]);
heapAdjust(a,largest,n);
}
}
void heapSort(int a[],int n)
{
int k=n;
int i=n/2;
while(i>=0)
{
heapAdjust(a,i,n);
i--;
}
while(n>=1)
{
swap(a[0],a[n-1]);
n--;
heapAdjust(a,0,n);
}
for(int j=0;j<k;j++)
{
cout<<a[j]<<" ";
}
}
int main()
{
int a[]={1,3,2,6,7,4,5,9};
heapSort(a,8);
system("pause");
return 0;
}
{
int largest=s;
if(2*s<n&&a[2*s]>a[s])largest=2*s;
if(2*s+1<n&&a[2*s+1]>a[largest])largest=2*s+1;
if(largest==s) return ;
else {
swap(a[s],a[largest]);
heapAdjust(a,largest,n);
}
}
void heapSort(int a[],int n)
{
int k=n;
int i=n/2;
while(i>=0)
{
heapAdjust(a,i,n);
i--;
}
while(n>=1)
{
swap(a[0],a[n-1]);
n--;
heapAdjust(a,0,n);
}
for(int j=0;j<k;j++)
{
cout<<a[j]<<" ";
}
}
int main()
{
int a[]={1,3,2,6,7,4,5,9};
heapSort(a,8);
system("pause");
return 0;
}
0 0
- 堆排序 感觉忘了实现一遍
- 14.合并两个排序的链表(做第二遍时感觉仍有难度,做到第三遍的时候就感觉没有难度了)
- 把jdbc又翻看了一遍,感觉竟然还收获颇丰
- 记录个面试经历,关于java内存区域,感觉被玩了一遍,怀疑人生
- 心痛的感觉 重新再来一遍
- 心痛的感觉 重新再来一遍
- 心痛的感觉 重新再来一遍
- 心痛的感觉 重新再来一遍
- 心痛的感觉 重新再来一遍
- 心痛的感觉 重新再来一遍
- 心痛的感觉 重新再来一遍
- 浏览了一遍wpf
- 今天重新装了一遍ArchLinux
- 又重新过了一遍vimtutor
- 过了一遍《linux程序设计》
- 赶时髦过了一遍Swift 语言....
- 赶时髦过了一遍Swift 语言....
- 一遍记住Java常用的八种排序算法与代码实现
- NumberPicker 有时显示为+ - 号,有时显示滑动选择的问题
- Java并发编程之闭锁CountDownLatch和栅栏(CyclicBarrier)
- Linux下,多线程程序死循环问题调试
- OI回忆录——小学、初中
- Tutorial 04: Spawning Threads
- 堆排序 感觉忘了实现一遍
- C# 获取当前路径方法(经典&重要)
- 类中包含几种成员,分别是什么?
- ROWID的含义与块地址rdba深入分析
- MySQL的Keepalived安装、配置、启动
- LeetCode之Find Minimum in Rotated Sorted Array II
- Axis2 Web服务配置文件services.xml详解
- HDU2282Chocolate(KM匹配)
- android常用权限命令