字元串排序演算法
⑴ 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()函數的功能是讀取字元串,並存放在指定的字元數組中,遇到換行符或文件結束標志時結束讀入。換行符不作為讀取串的內容,讀取的換行符被轉換為字元串結束標志'