• 用二叉树进行排序 x (从小到大)


    先输入n,表示拥有多少个数;

    第二行输入1-n个数,然后开始排序

    输出从小到大的排序.

    ----------------------------------------------代码~-------------------------------------------------

     1 #include<iostream>
     2 
     3 using namespace std;
     4 
     5 int d[1000];
     6 int n,i,total,tmp;
     7 
     8 void down(int i) {
     9     int t,j;
    10     while(i<=total/2) {
    11         j=2*i;
    12         if((j<total)&&(d[j+1]<d[j])) j=j+1;
    13         if(d[i]>d[j]) { //交换左右孩子,使得较小的为孩子
    14             t=d[i];
    15             d[i]=d[j];
    16             d[j]=t;
    17             i=j;//相当于进行i+1;
    18         } else break;
    19     }
    20 }
    21 
    22 int main() {
    23     cin>>n;
    24     for (i=1; i<=n; i++) cin>>d[i];
    25     total=n;
    26     for(i=n/2; i>=1; i--) down(i);//逆序,从孩子开始 
    27     for(i=1; i<=n; i++) {
    28         tmp=d[1];
    29         d[1]=d[total];
    30         d[total]=tmp;
    31         total=total-1;
    32         down(1);
    33     }
    34     for(i=n; i>=1; i--) cout<<d[i]<<" ";//逆序输出 
    35 }

    如果运气好也是错,那我倒愿意错上加错!

    ❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀

  • 相关阅读:
    java UDP传输
    InetAddress与Socket
    TCP和UDP的联系和用途
    网络通讯要素
    什么是网络编程?
    java 合并流(SequenceInputStream)
    最长上升子序列之基础
    《Linux Device Drivers》第十五章 内存映射和DMA——note
    HDU 5092 DP
    NGUI: UIPanel控件
  • 原文地址:https://www.cnblogs.com/zxqxwnngztxx/p/6772424.html
Copyright © 2020-2023  润新知