欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

9-基数排序C实现(待补充插图)

发布时间:2024/4/18 60 豆豆
生活随笔 收集整理的这篇文章主要介绍了 9-基数排序C实现(待补充插图) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

一、
主函数:void Buc_Sort(int* head,int low,int high)
参数解释
head:数组指针
[low, high]:需排序的数组范围

说明
创建一个Radix[L+1][10]数组来存储数据
Radix第0行第j列存储的信息为当前列中未被使用的行,可用于存储下一个数据
Radix第1行到第L行用于储存数据

#include <stdio.h> #include <time.h> #include <math.h>void Buc_Sort(int* head,int low,int high){//排序环境生成int L=high-low+1;//需排序的元素总数int temp=low,i=low+1;//找出最大的元素while(i<=high){if(head[i]>head[temp]){temp=i;}i++;}int Deep=1;//找出最大的层数while(pow(10,Deep)<head[temp]){Deep++;}int Radix[L+1][10];//也可用结构体链表代替//排序开始int flag=1;int temp1,temp2;while(flag<=Deep){for(int j=0;j<10;j++){//下一个可用位置Radix[0][j]=1;}for(int i1=1;i1<L+1;i1++){//初始化for(int j1=0;j1<10;j1++){Radix[i1][j1]=-1;}}i=0;while(i<=high){//排序中temp2=(head[i]%((int)pow(10,flag)))/(int)pow(10,flag-1);//获取head[i]第flag位数字(从右往左看)Radix[Radix[0][temp2]][temp2]=head[i];Radix[0][temp2]++;i++;}temp1=0;for(int j11=0;j11<10;j11++){//排序完毕复制结果for(int i11=1;i11<L+1;i11++){if(Radix[i11][j11]!=-1){head[temp1]=Radix[i11][j11];printf("\n#####%d\n",Radix[i11][j11]);temp1++;}}}flag++;printf("\n##################\n");} }int main(int argc, char **argv) {int r[11][10];printf("Hello, World!\n");int s[5];s[0]=653;s[1]=375;s[2]=497;s[3]=399;s[4]=129;int i=0;while(i<5)printf("%d ",s[i++]);printf("\n---------\n");Buc_Sort(s,0,4);int j=0;while(j<5)printf("%d ",s[j++]);//printf("\n%f ",pow(1,10));return 0; }

总结

以上是生活随笔为你收集整理的9-基数排序C实现(待补充插图)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。