题目描述
blablabla
样例
blablabla
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
include[HTML_REMOVED]
using namespace std;
// 各种排序方法总结
class Sort
{
public:
Sort(int);
public:
//operator <<
friend ostream& operator<<(ostream&,const Sort&);
public:
void heapsort(void);
protected:
//create heap
void createheap(void);
//heap adjustdown 大根堆 堆顶大于左右子树的值
void adjustdown(int,int);
protected:
int a[1000];
int n;
};
//constructor function
Sort::Sort(int _n)
{
this->n=_n;
for(int i=1;i<=n;i)
cin>>a[i];
}
// heap ajustdown
void Sort::adjustdown(int l, int r)
{
int i=l;
int j=2*i;
while(j<=r)
{
if(a[j]<=a[j+1]&&j+1<=r)
j=j+1;
//比左右子树小的话 交换
if(a[i][HTML_REMOVED]=1;i–)
adjustdown(i,n);
}
//
void Sort::heapsort(void)
{
// 1.创建堆
createheap();
//2.交换堆顶与堆尾元素
// 3.堆调整。1-i
for(int i=n;i>=1;i–)
{
swap(a[1],a[i]);
adjustdown(1,i-1);
}
}
ostream& operator<<(ostream& os,const Sort& that)
{
for(int i=1;i<=that.n;i)
{
os<[HTML_REMOVED]>n;
Sort s(n);
s.heapsort();
cout<<s<<endl;
return 0;
}