欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C语言实现排名算法和排位算法

程序员文章站 2024-01-05 17:32:40
结果输出 a[0]=1 b[0]=1 c[0]=6a[1]=2 b[1]=2 c[1]=1a[2]=3 b[2]=3 c[2]=4a[3]=3 b[3]=3 c[3]=3a[4]=6 b[4]=4 c[4]=2a[5]=7 b[5]=5 c[5]=5a[6]=7 b[6]=5 c[6]=0a[7]= ......
  1 #include "stdio.h"
  2 int search_second_max(int array[], int n,int m)
  3  {
  4      int max1;
  5      int i,num;
  6      num=1;//默认第一名 
  7      if(m>n) return 0; 
  8      max1 = array[m];
  9      for (i = 0; i < n; i++)
 10      {
 11          if (array[i]>max1)
 12          {
 13              num++;      
 14          }
 15 
 16      }
 17      return num;
 18 }
 19 
 20 
 21 void sort(int *a, int l)//a为数组地址,l为数组长度。
 22 {
 23     int i, j;
 24     int v;
 25     //排序主体
 26     for(i = 0; i < l - 1; i ++)
 27         for(j = i+1; j < l; j ++)
 28         {
 29             if(a[i] > a[j])//如前面的比后面的大,则交换。
 30             {
 31                 v = a[i];
 32                 a[i] = a[j];
 33                 a[j] = v;
 34             }
 35         }
 36 }
 37 
 38 //排名 
 39 void  PaiMing(int *a, int *b,int *c,int N)
 40 {
 41     int i, j;
 42     int v;
 43     int arrayindex[8][2];
 44     
 45     for(i=0;i<8;i++)
 46     {
 47        arrayindex[i][0]=a[i];
 48        arrayindex[i][1]=i;
 49     }
 50     //排序主体从小到大 
 51     for(i = 0; i < N - 1; i ++)
 52         for(j = i+1; j < N; j ++)
 53         {
 54             if(arrayindex[i][0] > arrayindex[j][0])//如前面的比后面的大,则交换。
 55             {
 56                 v = arrayindex[i][0];
 57                 arrayindex[i][0] = arrayindex[j][0];
 58                 arrayindex[j][0] = v;
 59                 
 60                 v = arrayindex[i][1];
 61                 arrayindex[i][1] = arrayindex[j][1];
 62                 arrayindex[j][1] = v;
 63                 
 64             }
 65         }    
 66         
 67        //排名次 
 68        for(i=0,j=1;i<N-1;i++)
 69        {
 70              
 71                if(arrayindex[i][0]!=arrayindex[i+1][0])
 72           {
 73                b[i]=j;
 74                j++;
 75                b[i+1]=j;
 76           }else
 77           {
 78                b[i]=j;
 79                b[i+1]=j;
 80           }
 81        } 
 82        
 83        for(i=0;i<N;i++)
 84        {
 85              a[i]=arrayindex[i][0];
 86              c[i]=arrayindex[i][1];
 87        }
 88     
 89 }
 90 
 91  
 92 int main(void)
 93 {
 94    int a[8]={7,2,6,3,3,7,1,8};    
 95    int num;
 96    int i;
 97    int b[8];
 98    int c[8]; 
 99 
100    printf("---------------------------------------\n");
101    
102    PaiMing(a,b,c,8); 
103    for(i=0;i<8;i++)
104    {
105         printf("a[%d]=%d b[%d]=%d c[%d]=%d \n",i,a[i],i,b[i],i,c[i]);
106    } 
107    printf("\n");
108    printf("----------------------------------------\n");
109         
110 
111 
112    
113 }

结果输出

---------------------------------------
a[0]=1 b[0]=1 c[0]=6
a[1]=2 b[1]=2 c[1]=1
a[2]=3 b[2]=3 c[2]=4
a[3]=3 b[3]=3 c[3]=3
a[4]=6 b[4]=4 c[4]=2
a[5]=7 b[5]=5 c[5]=5
a[6]=7 b[6]=5 c[6]=0
a[7]=8 b[7]=6 c[7]=7

----------------------------------------

--------------------------------
Process exited after 0.8098 seconds with return value 0
请按任意键继续. . .

上一篇:

下一篇: