JAVA编程-----------40、字符串排序

 1 package FushiExam;
 2 import java.util.*;
 3 public class Text_40 {
 4 
 5     public static void main(String[] args) {
 6         //对Stringnum=5个字符串排序
 7         int Stringnum=5;
 8         Scanner scan=new Scanner(System.in);
 9         String[] str=new String[Stringnum];
10         System.out.println("输入各个字符串:");
11         for(int i=0;i<Stringnum;i++) {
12             str[i]=scan.nextLine();
13         }
14         for(int i=str.length-1;i>0;i--) {//冒泡排序循环
15             for(int j=0;j<i;j++) {
16                 if(compare(str,j,j+1))//两个两个比较
17                     swap(str,j,j+1);
18             }
19             
20         }
21         System.out.println("最终结果是:");
22         for(int i=0;i<Stringnum;i++) {
23             System.out.println(str[i]);
24         }
25         
26 
27     }
28     public static boolean compare(String[] arr,int i,int j) {//比较函数
29         int flag=0;
30         //System.out.println(arr[i]+" 和 "+arr[j]+"比较.......");
31         boolean result=false;//设定初始值
32         for(int k=0;k<arr[i].length()&&k<arr[j].length();k++) {//每个字符串中的各个字符比较
33             if(arr[i].charAt(k)>arr[j].charAt(k)) {//如果 第一个字符串k位置比第二个字符串的k位置大,则两个字符串交换位置
34                 result=true;
35                 break;
36                 }
37             else if(arr[i].charAt(k)<arr[j].charAt(k)) {//如果 第一个字符串k位置比第二个字符串的k位置小,则两个字符串不交换位置
38                 result=false;
39                 break;
40             }
41             //默认有个else,代表当arr[i].charAt(k)=arr[j].charAt(k);时,比较下一个数
42             flag=k+1;//当k++=arr[i].length||k++=arr.length时,说明某一个字符串,是另一个字符串的前一部分
43             
44         }
45         if(flag>=arr[i].length()||flag>=arr[j].length())//当某一个字符串,是另一个字符串的前一部分时  如:abcd和abc比较,长度较长的字符串,在短的后边
46         {
47             if(arr[i].length()>arr[j].length()) {
48                 result=true;
49             }
50             else {
51                 result=false;
52             }
53         }
54         return result;
55     }
56     public static void swap(String [] str,int i,int j) {
57         System.out.println(str[i]+"与"+str[j]+"交换");
58         String temp=str[i];
59         str[i]=str[j];
60         str[j]=temp;
61         //System.out.println("交换结果"+str[i]+"---+"+str[j]);
62     }
63 }

 

posted @ 2020-03-20 16:10  Hey蜗牛  阅读(524)  评论(0编辑  收藏  举报