数据结构例程——简单的计数排序

本文是[数据结构基础系列(9):排序]中第9课时[简单的计数排序]的例程。

#include <stdio.h>
#include <malloc.h>
#define MaxSize 20
#define MaxNum 100
typedef int KeyType;    //定义关键字类型
typedef char InfoType[10];
typedef struct          //记录类型
{
    KeyType key;        //关键字项
    InfoType data;      //其他数据项,类型为InfoType
} RecType;          //排序的记录类型定义

void CountSort(RecType R[],int n)
{
    int i, j, k;
    int C[MaxNum+1] = {0};  /*用于计数的C数组的所有元素初值为0*/
    for(i=0; i<n; i++)
        C[R[i].key]++;    /*例如,R[i].key为6时,C[6]++,C[R[i].key]是R[i].key出现的次数*/
    k=0;
    for(j=0; j<=MaxNum; j++)    /*考察每一个j*/
        for(i=1; i<=C[j]; i++)   /*j=R[j].key出现过C[j]个,此即是排序的结果*/
            R[k++].key=j;
}

int main()
{
    int i,n=10;
    RecType R[MaxSize];
    KeyType a[]= {6,1,12,6,18,1,18,7,0,6};
    for (i=0; i<n; i++)
        R[i].key=a[i];
    printf("排序前:");
    for (i=0; i<n; i++)
        printf("%d ",R[i].key);
    printf("\n");
    CountSort(R,n);
    printf("排序后:");
    for (i=0; i<n; i++)
        printf("%d ",R[i].key);
    printf("\n");
    return 0;
}
时间: 2024-09-12 17:14:04

数据结构例程——简单的计数排序的相关文章

数据结构例程——插入排序之希尔排序

本文是[数据结构基础系列(9):排序]中第3课时[插入排序之希尔排序]的例程. 1.希尔排序 #include <stdio.h> #define MaxSize 20 typedef int KeyType; //定义关键字类型 typedef char InfoType[10]; typedef struct //记录类型 { KeyType key; //关键字项 InfoType data; //其他数据项,类型为InfoType } RecType; //排序的记录类型定义 void

数据结构例程——选择排序之直接选择排序

本文是[数据结构基础系列(9):排序]中第6课时[选择排序之直接选择排序]的例程. #include <stdio.h> #define MaxSize 20 typedef int KeyType; //定义关键字类型 typedef char InfoType[10]; typedef struct //记录类型 { KeyType key; //关键字项 InfoType data; //其他数据项,类型为InfoType } RecType; //排序的记录类型定义 void Sele

数据结构例程——选择排序之堆排序

本文是[数据结构基础系列(9):排序]中第7课时[选择排序之堆排序]的例程. 对算法运行过程,补充了一个示例,见[补充示例]. #include <stdio.h> #define MaxSize 20 typedef int KeyType; //定义关键字类型 typedef char InfoType[10]; typedef struct //记录类型 { KeyType key; //关键字项 InfoType data; //其他数据项,类型为InfoType } RecType;

数据结构例程——归并排序

本文是[数据结构基础系列(9):排序]中第8课时[归并排序]的例程. #include <stdio.h> #include <malloc.h> #define MaxSize 20 typedef int KeyType; //定义关键字类型 typedef char InfoType[10]; typedef struct //记录类型 { KeyType key; //关键字项 InfoType data; //其他数据项,类型为InfoType } RecType; //

数据结构例程——基数排序

本文是[数据结构基础系列(9):排序]中第10课时[基数排序]的例程. #include <stdio.h> #include <malloc.h> #include <string.h> #define MAXE 20 //线性表中最多元素个数 #define MAXR 10 //基数的最大取值 #define MAXD 8 //关键字位数的最大取值 typedef struct node { char data[MAXD]; //记录的关键字定义的字符串 struc

数据结构例程—— 交换排序之快速排序

本文是[数据结构基础系列(9):排序]中第5课时[交换排序之快速排序]的例程. 1.以第1个元素作为基准 #include <stdio.h> #define MaxSize 20 typedef int KeyType; //定义关键字类型 typedef char InfoType[10]; typedef struct //记录类型 { KeyType key; //关键字项 InfoType data; //其他数据项,类型为InfoType } RecType; //排序的记录类型定

数据结构例程——插入排序之直接插入排序

本文是[数据结构基础系列(9):排序]中第2课时[插入排序之直接插入排序]的例程. 1.直接插入排序 #include <stdio.h> #define MaxSize 20 typedef int KeyType; //定义关键字类型 typedef char InfoType[10]; typedef struct //记录类型 { KeyType key; //关键字项 InfoType data; //其他数据项,类型为InfoType } RecType; //排序的记录类型定义

JS简单实现表格排序功能示例_javascript技巧

本文实例讲述了JS简单实现表格排序功能的方法.分享给大家供大家参考,具体如下: 思路:遍历每个li,并把它们存放到数组中去,然后通过sort()方法进行排序,再插入 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="htt

排序:计数排序

原理 计数排序要求要排序的数据必须是介于一定范围的整数. 假设要排的数介于0~k之间,且保存在数组A中,排序结果保存在数组Z中.可以建立一个临时数组T[k+1],将数组A中值为i的元素用T的下标i表示,而T[i]的值就是A中小于等于i的个数.然后通过T将A中的数一一映射到Z中. 举例 假设A={0,4,2,2,3},由于A中的数据范围介于0~4之间,故建立T[5]并初始化为0. 其中小于等于0的数只有它本身一个,故T[0]=1:小于等于2的有3个,故T[2]=3:小于等于3的有4个,故T[3]=