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

简介: 本文是[数据结构基础系列(9):排序]中第9课时[简单的计数排序]的例程。#include <stdio.h>#include <malloc.h>#define MaxSize 20#define MaxNum 100typedef int KeyType; //定义关键字类型typedef char InfoType[10]

本文是[数据结构基础系列(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;
}
目录
相关文章
|
搜索推荐 算法 测试技术
数据结构排序——计数排序和排序总结(附上912. 排序数组讲解)
数据结构排序——计数排序和排序总结(附上912. 排序数组讲解)
116 0
|
存储 搜索推荐 算法
【初阶数据结构篇】归并排序和计数排序(总结篇)
归并排序(MERGE-SORT)是建⽴在归并操作上的⼀种有效的排序算法,该算法是采⽤分治法(Divide andConquer)的⼀个⾮常典型的应⽤。
130 0
|
算法 搜索推荐
数据结构算法--6 希尔排序和计数排序
**希尔排序**是插入排序的改进版,通过分组插入来提高效率。它逐步减少元素间的间隔(增量序列),每次对每个间隔内的元素进行插入排序,最终增量为1时进行最后一次直接插入排序,实现整体接近有序到完全有序的过程。例如,对数组`5, 7, 4, 6, 3, 1, 2, 9, 8`,先以间隔`d=4`排序,然后`d=2`,最后`d=1`,完成排序。计数排序则适用于0到100的数值,通过统计每个数出现次数,创建对应计数数组,再根据计数重建有序数组,时间复杂度为`O(n)`。
|
11月前
|
存储 搜索推荐 算法
【用Java学习数据结构系列】七大排序要悄咪咪的学(直接插入,希尔,归并,选择,堆排,冒泡,快排)以及计数排序(非比较排序)
【用Java学习数据结构系列】七大排序要悄咪咪的学(直接插入,希尔,归并,选择,堆排,冒泡,快排)以及计数排序(非比较排序)
105 1
|
存储 算法 搜索推荐
【数据结构】归并排序的非递归写法和计数排序
【数据结构】归并排序的非递归写法和计数排序
|
存储 人工智能 算法
[数据结构]——非比较排序—计数排序
[数据结构]——非比较排序—计数排序
数据结构——lesson13排序之计数排序
数据结构——lesson13排序之计数排序
|
存储 搜索推荐 算法
【数据结构】八大排序之计数排序算法
【数据结构】八大排序之计数排序算法
130 4
|
搜索推荐 C语言
【C语言/数据结构】排序(归并排序|计数排序|排序算法复杂度)
【C语言/数据结构】排序(归并排序|计数排序|排序算法复杂度)
100 0
|
搜索推荐 算法 Java
【数据结构排序算法篇】----计数排序【实战演练】
【数据结构排序算法篇】----计数排序【实战演练】
141 2