zoukankan
html css js c++ java
算法导论8.34
题目:
如何在O(n)时间内,对0到n^2-1之间的n个整数进行排序
思路:
把整数转换为n进制再排序
代码:
#include <iostream> #include <cmath> using namespace std; int n, radix, length_A, digit = 2; void Print(int *A, int start, int end) { int i; for(i = start; i <= end; i++) { if(i == start)cout<<'{'; else cout<<' '; cout<<A[i]; } cout<<'}'<<endl; } //基数排序调用的稳定排序 void Stable_Sort(int *A, int *B, int k, int d) { int i, j; //将C数组初始化为0,用于计数 int *C = new int[k+1]; for(i = 0; i <= k; i++) C[i] = 0; int *D = new int[length_A+1]; for(j = 1; j <= length_A; j++) { //D[j]表示第[j]个元素的第i位数字 D[j] = A[j] % (int)pow(radix*1.0, d) / (int)pow(radix*1.0, d-1); //C[j]表示数字D[j]在数组A中出现的次数 C[D[j]]++; } //C[i]表示所以<=i的数字出现过的次数 for(i = 1; i <= k; i++) C[i] = C[i] + C[i-1]; //初始化B为0,B用于输出排序结果 for(i = 1; i <= length_A; i++) B[i] = 0; for(j = length_A; j >= 1; j--) { //如果<=D[j]的数字的个数是x,那么排序后A[j]应该出现在第x个位置,即B[x]=A[j] B[C[D[j]]] = A[j]; C[D[j]]--; } delete []C; delete []D; } //基数排序 void Radix_Sort(int *A, int *B) { int i, j; //依次对每一位进行排序,从低位到高位 for(i = 1; i <= digit; i++) { Stable_Sort(A, B, radix-1, i); //输入的是A,输出的是B,再次排序时要把输出数据放入输出数据中 for(j = 1; j <= length_A; j++) A[j] = B[j]; } } int main() { cin>>n; length_A = n; int *A = new int[n+1]; int *B = new int[n+1]; bool flag[1000] = {0}; int i; //生产n个随机的数据范围在0到n^-1之间 for(i = 1; i <= n; i++) { do { A[i] = rand() % (n*n); }while(flag[A[i]]); flag[A[i]] = 1; } Print(A, 1, n); radix = n; Radix_Sort(A, B); Print(A, 1, n); return 0; }
查看全文
相关阅读:
POC- Proof of Cocept -- 概念验证
英语语法学习 7 -- 数词
英语语法学习6 -- 代词
英语语法学习5-冠词
英语语法学习4-名词
英语语法学习3-句子的组成和分类
alibaba-Java开发手册心得-一编程规约-4oop(面向对象编程)规约
alibaba-Java开发手册心得-一编程规约-3代码格式
alibaba-Java开发手册心得-一编程规约-2常量定义
魔法值的简单了解
原文地址:https://www.cnblogs.com/windmissing/p/2559796.html
最新文章
关于javascript document.createDocumentFragment() 替代insertCell、insertRow这种每次都使用大量的资源导致浏览器崩溃
编译原理 Assign1
ccf 字符串匹配
ccf 画图
ccf 相邻数对
ccf 最优灌溉
ccf 集合竞价
ccf z字形扫描
ccf 门禁系统
ZOJ 1076 排序+动态规划
热门文章
CodeForces 523C
HDU 2046 递推
POJ 2576 二维背包
CodeForces 522A
进程创建
守护进程
CSS3 设置 Table 隔行变色
Java Script to Read, Write, and Delete cookies
ASP.NET 网站在域环境内配置授权访问
启用 ASP.NET MVC 项目的 Edit and Continue
Copyright © 2011-2022 走看看