//
// sort_.cpp
// Sort
//
// Created by ljpc on 2018/4/20.
// Copyright © 2018年 ljpc. All rights reserved.
//
#include “sort_.h”
void print_array(int *arr, int n)
// 打印数组
{
if(n==0){
printf(“ERROR: Array length is ZERO\n”);
return;
}
printf("%d", arr[0]);
for (int i=1; i<n; i++) {
printf(" %d", arr[i]);
}
printf("\n");
}
int* sort_array(int arr, int n)
// 编程实现《基数排序算法》
// 函数参数:乱序整数数组 数组长度
// 函数返回值:返回从小到大排序后的数组
{
// 请在这里补充代码,完成本关任务
/********* Begin *********/
int temp[10][n]={0}; //第一个10表示0~9,第二个20表示a的size
int order[n]={0};
int i,j,k; //k表示当前比较的那一位上的具体数字
int t; //n=1,10,100,1000...取决于a中的最大的数
int p;
t=1;
while(t <= 100)
{
for(i=0;i<n;i++)
{
k = (arr[i]/t) % 10;
temp[k][order[k]] = arr[i];
order[k]++;
}
p=0; //p为一次排序过程中,a的脚标
for(i=0;i<n;i++)
{
if(order[i] != 0)
{
for(j=0;j<order[i];j++)
{
arr[p] = temp[i][j];
p++;
}
order[i] = 0;
}
}
t *= 10;
}
return arr;
/********** End **********/
}