天天看点

比较计数法-C语言示例

用比较计数法对一些数字组合进行升序排序;是一个很简单直接的办法;

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#define N 5

typedef unsigned char UINT8;

typedef unsigned short UINT16;

typedef unsigned int UINT32;

typedef unsigned int UINT;

/*初始化参数*/

typedef struct

{

       /*要比较的数目*/

       unsigned int num;

       /*存储数字比较次数 */

       unsigned int con;

       /*保留字段*/

       unsigned int reserved[18];

} CON_INIT_PARAM, *PCON_INIT_PARAM;

void main()

       UINT i = 0;

      UINT j = 0;

      CON_INIT_PARAM a[20];

      memset(a, 0, sizeof(CON_INIT_PARAM)*20);

      for(i = 0; i < N; i++)

      {

            scanf("%d",&a[i].num);

            a[i].con = 0;

      }

      for(i = N-1; i > 0;i--)

            for(j = i-1; j > 0;j--)

            {

                  if(a[i].num < a[j].num)

                  {

                        a[j].con++;

                  }

                  else

                        a[i].con++;

            }

      for(i=0; i<N; i++)

            printf("CON_INIT_PARAM num = %d, con = %d\n",a[i].num,a[i].con);

}

运行结果如下:

比较计数法-C语言示例