【发布时间】:2020-04-28 13:36:32
【问题描述】:
Input char a[10] = {'c','b','c','d','E','C','a','A','b','C'};
输出:A a b b C C c c d e
我得到了一个字符数组,我必须按升序对其进行排序,并且我必须使用计数排序来做到这一点
到目前为止我已经尝试过:
#include <stdio.h>
#include <stdlib.h>
#define RANGE 255
void countingSort(char a[], char b[], int n) // a = array, b = empty array, n = size
{
int i;
int c[RANGE +1];
memset(c, 0, sizeof(c));
for( i = 0; i< n; i++)
{
c[a[i]] = c[a[i]] + 1;
}
for(i = 1; i<RANGE; i++)
{
c[i] = c[i] + c[i-1];
}
for(i = n-1; i>=0; i--)
{
b[c[a[i]] - 1] = a[i];
c[a[i]] = c[a[i]] - 1;
}
}
int main()
{
char a[10] = {'c','b','c','d','E','C','a','A','b','C'};
int n = 10;
char b[10];
int i;
for( i = 0; i<n;i++)
{
printf("%c",a[i]);
}
printf("\n");
countingSort(a,b,n);
for( i = 0; i<n;i++)
{
printf("%c",b[i]);
}
printf("\n");
return 0;
}
我已经使用 ASCII 表对数组进行排序,我的输出是
ACCEabbccd
我设法按升序对数组进行了排序,但我不知道如何在 A 之后放置一个等等。
【问题讨论】:
-
必须在未经编辑的情况下使用
countingSort(),然后在调用countingSort()后应用代码或者countingSort()可以更改吗? -
countingSort() 可以编辑,但必须在程序中。其实我们是在课堂上学习计数排序算法,所以需要在代码中实现。
标签: c arrays sorting ascii counting-sort