zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    hdu 3648 Median Filter (树状数组)
    poj 1470 Closest Common Ancestors (LCA)
    poj 1330 Nearest Common Ancestors (LCA)
    hdu 2586 How far away ? (LCA)
    poj 3253 Fence Repair (哈夫曼)
    poj 1094 Sorting It All Out (拓扑排序)
    hdu 2527 Safe Or Unsafe (哈夫曼树)
    三层架构
    SQL2008、SQL2013 执行Transact-SQL 语句或者批处理时发生了异常。错误5120
    【MediaKit】WPF项目中 调用摄像头拍照的开发包
  • 原文地址:https://www.cnblogs.com/fmust/p/12532392.html
Copyright © 2011-2022 走看看