You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++计数排序算法中如何为数组填充随机数替代手动逐个输入

计数排序代码修改方案(自动生成随机数组)

核心修改说明

你只需要调整头文件引入和main函数中的数组赋值逻辑即可,具体修改点如下:

  • 新增2个必要头文件:<cstdlib> 提供随机数相关函数,<ctime> 用于初始化随机种子,保证每次运行生成的随机值不同
  • 删除原代码中手动输入数组元素的cin循环,替换为rand()赋值逻辑
  • 可选:增加原数组打印逻辑,方便对比排序前后的结果

如果需要调整随机数的生成范围,比如要生成0~N之间的整数,修改rand() % (N+1)即可。

完整修改后代码

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int k=0;    

void sort_func(int A[],int B[],int n)    
{
    int count[k+1],t;
    for(int i=0;i<=k;i++)
    {
        count[i] = 0;
    }
    for(int i=0;i<n;i++)
    {
        t = A[i];
        count[t]++;         
    }
    for(int i=1;i<=k;i++)
    {
        count[i] = count[i]+count[i-1];            
    }
    for(int i=0;i<n;i++)
    {
        t = A[i];
        B[count[t]] = t;          
        count[t]=count[t]-1;        
    }
}

int main()
{
    // 初始化随机种子,全局只需调用一次
    srand(time(0));

    int n;
    cout<<"Enter the size of the array :";
    cin>>n;
    int A[n],B[n]; 
    // 替换手动输入为随机生成,示例默认生成0~99之间的随机整数
    cout<<"生成的原数组为:";
    for(int i=0;i<n;i++)        
    {
        A[i] = rand() % 100; // 这里的100控制随机数上限,可自行调整
        cout<<A[i]<<" ";
        if(A[i]>k)
        {
            k = A[i];              
        }
    }
    cout<<endl;
    sort_func(A,B,n);        
    cout<<"排序后的数组为:";
    for(int i=1;i<=n;i++)       
    {
        cout<<B[i]<<" ";
    }
    cout<<"\n";
    return 0;
}

注:原代码中的变长数组int A[n], B[n]属于C语言特性,部分C编译器可能不支持,如果需要兼容标准C,可以将数组替换为vector<int>实现。

内容的提问来源于stack exchange,提问作者Mehmet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 21:45:04