字符串排序
2016-07-11 09:57
267 查看
编写一个程序,将输入字符串中的字符按如下规则排序。规则1:英文字母从A到Z排列,不区分大小写。 如,输入:Type 输出:epTy规则2:同一个英文字母的大小写同时存在时,按照输入顺序排列。 如,输入:BabA 输出:aABb规则3:非英文字母的其它字符保持原来的位置。 如,输入:By?e 输出:Be?y样例: 输入: A Famous Saying: Much Ado About Nothing(2012/8). 输出: A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8)
注:此处可以用冒泡排序法,因为针对条件“同一个英文字母的大小写同时存在时,按照输入顺序排列”,正式冒泡排序的稳定性。
#include<iostream>
#include<stdlib.h>
#include<ctype.h>
using namespace std;
int main()
{
char str[50];
gets(str);
int q,j,k,temp;
int n=strlen(str);
for(int i=0;i<n;i++)
{
for( j=0;j<n-i-1;j++)
{
if(toupper(str[j])>'Z'||toupper(str[j])<'A')
continue;
k=toupper(str[j]);
q=j;
while((toupper(str[j+1])>'Z'||toupper(str[j+1])<'A')&&j<n-i-1)
j++;
if(j>=n-i-1)
continue;
if(k>toupper(str[j+1]))
{
temp=str[q];
str[q]=str[j+1];
str[j+1]=temp;
}
}
}
for(int i=0;i<n;i++)
cout<<str[i];
system("pause");
return 0;
}
注:此处可以用冒泡排序法,因为针对条件“同一个英文字母的大小写同时存在时,按照输入顺序排列”,正式冒泡排序的稳定性。
#include<iostream>
#include<stdlib.h>
#include<ctype.h>
using namespace std;
int main()
{
char str[50];
gets(str);
int q,j,k,temp;
int n=strlen(str);
for(int i=0;i<n;i++)
{
for( j=0;j<n-i-1;j++)
{
if(toupper(str[j])>'Z'||toupper(str[j])<'A')
continue;
k=toupper(str[j]);
q=j;
while((toupper(str[j+1])>'Z'||toupper(str[j+1])<'A')&&j<n-i-1)
j++;
if(j>=n-i-1)
continue;
if(k>toupper(str[j+1]))
{
temp=str[q];
str[q]=str[j+1];
str[j+1]=temp;
}
}
}
for(int i=0;i<n;i++)
cout<<str[i];
system("pause");
return 0;
}
相关文章推荐
- 批处理命令教学之字符串排序(sort)
- HashSet下的字符串排序,关键字,HashSet转TreeSet()
- 字符串排序
- 字符串排序新探索——使用基数排序
- 用fputs和fgets操作文件-将字符串存储到文件中并从文件中读出
- 1023_字符串排序
- 南邮 OJ 1023 字符串排序
- POJ 1007 DNA Sorting
- 写一个函数排序整个字符串数组
- UIString排序
- 字符串排序
- 字符串排序----排序算法的选择
- Java字符串排序,不用数组,联系字符串操作方法
- 面试 C 算法 排序
- java字符串排序。
- 数据库查询字符格式的变量按照整型排序
- 拼接所有字符串产生字典顺序最小的大写字符串
- Mysql数字字符串按照数字排序
- 随机生成字符,将字符转化成字符串并排序
- 高位优先的字符串排序(c++ ASCII)