zoukankan      html  css  js  c++  java
  • C语言-计数排序

     计数排序的基本思想是:统计一个数序列中小于某个元素a的个数为n,则直接把该元素a放到第n+1个位置上。当然当过有几个元素相同时要做适当的调整,因为不能把所有的元素放到同一个位置上。计数排序假设输入的元素都是0到k之间的整数

     1 #include <stdio.h>
     2 void sort(int *A, int *B, int array_size, int k)
     3 {
     4         int C[k+1], i, value, pos;
     5         for(i=0; i<=k; i++)
     6         {
     7             C[i] = 0;
     8         }
     9         for(i=0; i< array_size; i++)
    10         {
    11             C[A[i]] ++;
    12         }
    13         for(i=1; i<=k; i++)
    14         {
    15             C[i] = C[i] + C[i-1];
    16         }
    17         for(i=array_size-1; i>=0; i--)
    18         {
    19             value = A[i];
    20             pos = C[value];
    21             B[pos-1] = value;
    22             C[value]--;
    23         }
    24 }
    25 
    26         
    27 int main()
    28 {
    29         int A[8] = {2, 5, 3, 0, 2, 3, 0, 3}, B[8], i;
    30         sort(A, B, 8, 5);
    31         for (i=0; i<= 7; i++)
    32         {
    33             printf("%d ", B[i]);
    34         }
    35         printf("
    ");
    36         return 0;
    37 }

    对于数据2 5 3 0 2 3 0 3程序执行的过程如下图所示:

  • 相关阅读:
    无言
    计算机网络的所有课件
    Linux 分区
    Linux 文件管理权限
    DropDownList 控件
    CssClass初步语法了解
    BulletedList用途
    BulletedList项目控件基础CSS基础
    Checkbox与foreach循环
    RadioButton控件
  • 原文地址:https://www.cnblogs.com/xiaojingang/p/3724517.html
Copyright © 2011-2022 走看看