程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 九度1167 數組排序

九度1167 數組排序

編輯:C++入門知識

[cpp]  /*********************************   *    日期:2013-1-29   *    作者:SJF0115   *    題號: 九度1167   *    題目:數組排序   *    來源:   *    結果:AC   *    題意:   *    總結:  **********************************/   #include<stdio.h>    #include<stdlib.h>    #include<string.h>       typedef struct Data{       int number;//數據        int beforeOrder; //排序前序號        int afterOrder;//排序後序號    }Data;      //排序函數       int cmp(const void *a,const void *b)       {           struct Data *c=(Data*)a;           struct Data *d=(Data*)b;              return c->number - d->number;    }      int cmp2(const void *a,const void *b)       {           struct Data *c=(Data*)a;           struct Data *d=(Data*)b;              return c->beforeOrder - d->beforeOrder;    }             int main()   {       int n,i;       //freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin);        while(scanf("%d",&n)!=EOF)       {           Data data[10001];           //輸入數據            for(i = 0;i < n;i++){               scanf("%d",&data[i].number);               data[i].beforeOrder = i;               data[i].afterOrder = 1;           }           //按數據大小排序            qsort(data,n,sizeof(data[0]),cmp);           //計算排序後的序號            for(i = 0;i < n-1;i++){               if(data[i].number == data[i+1].number){                   data[i+1].afterOrder = data[i].afterOrder;               }               else if(data[i].number < data[i+1].number){                   data[i+1].afterOrder = data[i].afterOrder + 1;               }           }           //按排序前序號排序            qsort(data,n,sizeof(data[0]),cmp2);           //按排序前序號輸出數據            for(i = 0;i < n;i++){               printf("%d",data[i].afterOrder);               if(i == n-1){                   printf("\n");               }               else{                   printf(" ");               }           }       }       return 0;   }     /*********************************  *    日期:2013-1-29  *    作者:SJF0115  *    題號: 九度1167  *    題目:數組排序  *    來源:   *    結果:AC  *    題意:  *    總結: **********************************/ #include<stdio.h> #include<stdlib.h> #include<string.h>   typedef struct Data{ int number;//數據 int beforeOrder; //排序前序號 int afterOrder;//排序後序號 }Data;   //排序函數    int cmp(const void *a,const void *b)     {         struct Data *c=(Data*)a;         struct Data *d=(Data*)b;            return c->number - d->number;  }   int cmp2(const void *a,const void *b)     {         struct Data *c=(Data*)a;         struct Data *d=(Data*)b;            return c->beforeOrder - d->beforeOrder;  }          int main() { int n,i; //freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin); while(scanf("%d",&n)!=EOF) { Data data[10001]; //輸入數據 for(i = 0;i < n;i++){ scanf("%d",&data[i].number); data[i].beforeOrder = i; data[i].afterOrder = 1; } //按數據大小排序 qsort(data,n,sizeof(data[0]),cmp); //計算排序後的序號 for(i = 0;i < n-1;i++){ if(data[i].number == data[i+1].number){ data[i+1].afterOrder = data[i].afterOrder; } else if(data[i].number < data[i+1].number){ data[i+1].afterOrder = data[i].afterOrder + 1; }www.2cto.com } //按排序前序號排序 qsort(data,n,sizeof(data[0]),cmp2); //按排序前序號輸出數據 for(i = 0;i < n;i++){ printf("%d",data[i].afterOrder); if(i == n-1){ printf("\n"); } else{ printf(" "); } } } return 0; }  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved