基数排序
来源:互联网 发布:java基础教程 pdf下载 编辑:程序博客网 时间:2024/05/29 09:53
题目:用基数排序法给n个数排序,每个元素不超过100000
输入要求:
There are multiple cases.
For each case, the first line is an integer n. The next line contains a[i] (1<=i<=n, 1<=a[i]<=100000) to be sorted.
基数排序,我们按照低位到高位的数字一位位运算,依次入队出队。
下面来模拟一下该过程,比如初始序列是91 6 85 15 92 35 30 22 39,我们先给低位排序,
第一次排序:
出队后序列为30 91 92 22 85 15 35 6 39,下面我们再来给高位排序,
第二次排序:
出队后序列为6 15 22 30 35 39 85 91 92
#include <iostream>#include <queue> using namespace std;int main(){ int n; while(cin>>n) { int *a = new int[n]; queue<int> q[10]; //10个对应于位的队列 for(int i=0;i<n;i++) cin >> a[i]; for(int pos=1; pos<=6; pos++) { for(int i=0;i<n;i++){ //按位取数入栈 int getp, temp=1, num=a[i]; for (int i = 0; i < pos - 1; i++) temp *= 10; getp = (num/temp) % 10; q[getp].push(a[i]); } int k=0; for(int i=0;i<10;i++) { while(!q[i].empty()){ //先取队首元素保存在数组,再出栈 a[k++] = q[i].front(); q[i].pop() ; } } } for(int i=0;i<n-1;i++) cout << a[i] <<" "; cout << a[n-1] << endl; //末尾没有空格 delete []a; } return 0;}
0 0
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 面向对象程序设计上机练习九(对象指针)
- Android学习笔记2——android的四大组件
- codeblocks 背景设置和光标的设置!!!
- 用Python 和 Java 写的Sunday字符串排序算法
- UVA - 10905 Children's Game 字符串的排序
- 基数排序
- Java compiler level does not match the version of the installed Java project facet. 错误处理
- LeetCode[Array]: Pascal's Triangle
- 会话bean综述(未排版)
- TNS-12571: TNS: 包写入程序失败
- 开始写博客了
- 面试题目——基础篇
- 安卓之旅(1)---创建一个安卓项目
- 『IOS』NSdata 与 NSString,Byte数组,UIImage 的相互转换