代码练习1-基数排序

本文详细介绍了基数排序算法的实现过程,包括获取最大值、对每位计数并排序以及输出每趟排序的结果,使用C语言和STL库完成整数数组的基数排序。
摘要由CSDN通过智能技术生成

/*根据输入,输出基数排序的每趟排序结果。

输入格式:输入数字为正整数,先输入排序数字个数,然后输入需要排序的数字序列。

输出:每趟排序结果。

要求:程序需要实现排序,其他可以使用stl包。*/

/*根据输入,输出基数排序的每趟排序结果。
输入格式:输入数字为正整数,先输入排序数字个数,然后输入需要排序的数字序列。
输出:每趟排序结果。
要求:程序需要实现排序,其他可以使用stl包。*/
#include<stdio.h>
#include<stdlib.h>

//取得最大值
int getmax(int array[],int n){
    int mx=0;
    for(int i=0;i<n;i++){
        if(mx<array[i]){
            mx=array[i];
        }
    }
    return mx;
}

//对每位计数并且进行排序
//exp表示10的幂次方 初始为1
//计数数组初始为零 输出数组也为0

void numsort(int array[],int n,int exp){

    int count[10]={0};
    int output[n];
    for(int i=0;i<n;i++){
        count[(array[i]/exp)%10]++;
    }
    for(int i=1;i<10;i++){
        count[i]+=count[i-1];
    }
    for(int i=n-1;i>=0;i--){
        output[count[(array[i]/exp)%10]-1]=array[i];
        count[array[i]/exp%10]--;
    }
    for(int i=0;i<n;i++){
        array[i]=output[i];
        //利用array输出
    }
}

void print(int array[],int n){
    for(int i=0;i<n;i++){
        printf("%d",array[i]);
        printf(" ");
    }
}

int main(){
    int array[]={2343,6,66,152310,5594,592783,27,8};
    int n=sizeof(array)/sizeof(array[0]);
    int m=getmax (array,n);
    int exp;
    for(exp=1;m/exp>0;exp*=10){
        numsort(array,n,exp);
        print(array,n);
    printf("\n");
    }
    return 0;
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值