请对 n 长数列 a_1,a_2...,a_n从小到大排序并输出结果。
请你使用 非比较 的排序算法
请对 n 长数列 a_1,a_2...,a_n从小到大排序并输出结果(相关搜索:排序算法)
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
5条回答 默认 最新
a5156520 2024-07-11 16:17关注根据参考链接,采用基数排序来来排序输入的n个整数。
测试如下:
参考链接:【C++】十大经典排序算法详解_c++排序算法大全-CSDN博客 文章浏览阅读1.2k次,点赞2次,收藏8次。文章目录排序算法总览比较类排序算法交换排序一. 冒泡排序算法思想算法步骤动图演示代码实现二. 快速排序算法思想算法步骤动图演示代码实现三. 插入排序算法思想算法步骤动图演示代码实现四. 希尔排序算法思想算法步骤动图演示代码实现五. 选择_c++排序算法大全https://blog.csdn.net/hbqjzx/article/details/109109080
#include <bits/stdc++.h> using namespace std; int n; int a[1000]; void radix_sort(int a[],int size) { int n; for(int i=1; i<=100; i=i*10) { int tmp[1000][10]; memset(tmp,0,sizeof(tmp)); //建立一个1000行,10列的数组,每一列分别代表0~9位数,1000行代表能存放的总个数 for(int j=0;j<size;j++) { n=(a[j]/i)%10; tmp[j][n]=a[j]; } int k=0; for(int p=0; p<10; p++) for(int q=0; q<size; q++) { if(tmp[q][p]!=0) a[k++]=tmp[q][p]; } } } int main() { // https://blog.csdn.net/hbqjzx/article/details/109109080 // 代码来源于上面的链接 scanf("%d",&n); for(int i=0; i<n; i++) scanf("%d",&a[i]); radix_sort(a,n); for(int i=0; i<n; i++) printf("%d ",a[i]); printf("\n"); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录