字符串排序算法
⑴ java 字符串排序
//这个绝对满足您的要求
import java.util.Arrays;
public class StringSort {
public static void main(String[] args) {
String ss[]={"ab","wang","hi","a","abff"};
MyString mySs[]=new MyString[ss.length];//创建自定义排序的数组
for (int i = 0; i < ss.length; i++) {
mySs[i]=new MyString(ss[i]);
}
Arrays.sort(mySs);//排序
for (int i = 0; i < mySs.length; i++) {
System.out.println(mySs[i].s);
}
}
}
class MyString implements Comparable<MyString>{
public String s;//包装String
public MyString(String s) {
this.s = s;
}
@Override
public int compareTo(MyString o) {
if(o==null||o.s==null) return 1;
if(s.length()>o.s.length()) return 1;
else if(s.length()<o.s.length()) return -1;
return s.compareTo(o.s);
}
}
⑵ 输入n个字符串,用任意算法对其进行排序并按从小到大顺序输出
#include<stdio.h>
#include<string.h>
int main ()
{
char s[100][50],t[50];
int n,i,j,k;
scanf("%d ",&n);
for(i=0;i<n;i++)
gets(s[i]);
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp(s[j],s[k])<0)k=j;
strcpy(t,s[i]); strcpy(s[i],s[k]); strcpy(s[k],t);
}
printf("====== ");
for(i=0;i<n;i++)
puts(s[i]);
return 0;
}
伪代码:
1。输入n
2。输入n个字符串到s数组
3。i=0
4。扫描第i个以后的所有字符串,找到最小字符串的序号
5。将第i个字符串与找到的最小字符串交换,然后i加1。
6。如i<n,转4。
7。输出n个字符串。
⑶ 字符串排序问题
#include<stdio.h>
#include<string.h>
#include<conio.h>
int num_A(char *str)//计算A的个数
{
int num=0;
int i=0;
while(str[i])
{
if(str[i]=='A')
num++;
i++;
}
return num;
}
void main()
{
char str[100][100];//存放数组
int ch;
int len[100];//存放对应数组中A的个数...
int i=0,j=0,temp;
printf("Please Input the strings include \"A or M ro C\",Press [e] to end:\n");
printf("------------------------------------------------------\n");
while(1)
{
ch=getch();
if(ch=='e'||ch=='E')
{
str[i][0]='\0';
break;
}
if(ch==8)
{
if(j!=0)
{
j--;
printf("\b \b");
str[i][j]='\0';
}
continue;
}
if(ch==13)
{
if(j!=0)
{
str[i][j]='\0';
i++;
j=0;
printf("\n");
}
continue;
}
if(ch=='A'||ch=='C'||ch=='M')
{
str[i][j]=ch;
printf("%c",ch);
j++;
}
}
temp=i;
printf("------------------------------------------------------\nresult:\n");
printf("------------------------------------------------------\n");
for(i=0;i<temp;i++)
{
len[i]=num_A(str[i]);
}
for(i=0;i<temp;i++)
{
for(j=0;j<temp;j++)
{
if(len[j]==i)
{
printf("%s\n",str[j]);
}
}
}
printf("------------------------------------------------------\n");
}
/*********************************/
/********只能输入C M A*************/
/********输入其他不接受*************/
/********输入e结束字符串输入********/
/*********************************/
⑷ C语言中如何将10个字符串进行排序
#include<stdio.h>
#include<string.h>
int main()
{
int j,k,i,t,n;
char s[10][10],b[10][10];
for(i=0;i<10;i++)
{
scanf("%s",s[i]);
}
n=strlen(s[1]);
k=0;
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
if(strcmp(s[j],s[j+1])>0)
{
for(k=0;k<n;k++)
b[j][k]=s[j][k];
for(k=0;k<n;k++)
s[j][k]=s[j+1][k];
for(k=0;k<n;k++)
s[j+1][k]=b[j][k];
}
}
for(i=0;i<10;i++)
{
printf("%s ",s[i]);
}
return 0;
}
运行效果:
(4)字符串排序算法扩展阅读:
scanf函数用法:
scanf("输入控制符",输入参数);
功能:将从键盘输入的字符转化为“输入控制符”所规定格式的数据,然后存入以输入参数的值为地址的变量中。
用scanf()函数以%s格式读入的数据不能含有空白符时,所有空白符都被当做数据结束的标志。所以题中函数输出的值只有空格前面的部分。
如果想要输出包括空格在内的所有数据,可以使用gets()函数读入数据。gets()函数的功能是读取字符串,并存放在指定的字符数组中,遇到换行符或文件结束标志时结束读入。换行符不作为读取串的内容,读取的换行符被转换为字符串结束标志'