|
地板
楼主 |
发表于 2018-9-14 15:49:48
|
只看该作者
归并排序
- #include<iostream>
- using namespace std;
- ///int a[n];
- void heap(int *a,int n,int i)
- {
- int x=a[i];
- int j=i<<1;
- while(j<=n)
- {
- if(j<n&&a[j]<a[j+1]) j++;
- if(x<a[j])
- {
- a[i]=a[j];
- i=j;j=i<<1;
- }
- else j=n+1;
- }
- a[i]=x;
- }
- void heapsort(int *a,int n)
- {
- for(int i=n;i>=1;i--) heap(a,n,i);
- for(int i=n;i>=2;i--)
- {
- swap(a[1],a[i]);
- heap(a,i-1,1);
- }
- }
- int a[100010];
- int main()
- {
- int n;
- cin>>n;
- for(int i=1;i<=n;i++)
- cin>>a[i];
- heapsort(a,n);
- for(int i=1;i<=n;i++)
- cout<<a[i]<<" ";
- }
复制代码 |
|