首页 > 其他 > 详细

字符串LSD

时间:2020-05-09 10:03:28      阅读:49      评论:0      收藏:0      [点我收藏+]
#include<iostream>
#include<string>
using namespace std;
int n;
void LSD(string *a, int N) {
	int W = a[0].length(), R = 256;
	string *Aux = new string[N];
	int *Count = new int[R + 1];
 
	for (int k = W - 1; k >= 0; k--) {
		// 初始化索引数组
		for (int i = 0; i < R + 1; i++)
			Count[i] = 0;
 
		// 计算位置k上字符频数
		for (int i = 0; i < N; i++)
			Count[a[i][k] + 1]++;
 
		// 将频数转换为索引
		for (int i = 0; i < R; i++)
			Count[i + 1] += Count[i];
 
		// 将元素分类
		for (int i = 0; i < N; i++)
			Aux[Count[a[i][k]]++] = a[i];
 
		// 回写
		for (int i = 0; i < N; i++)
			a[i] = Aux[i];
	}
	Aux = NULL;
	delete Aux;
	Aux = NULL;
	delete Count;
	Count = NULL;
	for(int i=0;i<N;i++){
		cout<<a[i]<<‘ ‘;
	}
}
int main(){
	cout<<"输入要排序的单词总数:"<<endl;
	cin>>n; 
	string s[n];
	cout<<"输入要排序的单词:"<<endl;
	for(int i=0;i<n;i++){
		cin>>s[i];
	}
	LSD(s,n);
}

  技术分享图片

 

字符串LSD

原文:https://www.cnblogs.com/jcahsy/p/12855412.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!