华为机试题:图片整理

时间:2022-06-13 18:49:46

描述


Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过C语言解决。

 


知识点 字符串
运行时间限制 0M
内存限制 0
输入

Lily使用的图片包括"A"到"Z"、"a"到"z"、"0"到"9"。输入字母或数字个数不超过1024。

 


输出

Lily的所有图片按照从小到大的顺序输出

 


样例输入 Ihave1nose2hands10fingers
样例输出 0112Iaadeeefghhinnnorsssv
代码实现:

#include <iostream>
#include <string>
#include <stdlib.h>

using namespace std;

int main()
{
	char szStr[1024] = {0}; 
	int gag = 0, nLen = 0;;
	int i = 0 , j = 0, k = 0;
	int nTemp = 0;


	cin >> szStr;
	nLen = strlen(szStr);

	/* 采用希尔排序 */
	for(gag = nLen/2; gag > 0; gag = gag/2)
	{
		for(i = 0; i < gag; i++)
		{
			for(j = i+gag; j < nLen; j = j+gag)
			{
				for(k = j; k >= gag; k = k - gag)
				{
					if(szStr[k] < szStr[k-gag])
					{
						nTemp = szStr[k];
						szStr[k] = szStr[k-gag];
						szStr[k-gag] = nTemp; 
					}
				}
			}
		}
	}
	
	cout << szStr << endl;
	return 0;
}