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
请按任意键继续. . .