Java的相关的排序实现(参考软件设计师教程)

package com.liuxt.sort;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class SortMain {
 public static void main(String[] args) {
  SortTemplate template = null;
  
  //初始化模版类
  try {
   template = new SortTemplate();
  } catch (Exception e) {
   e.printStackTrace();
   System.exit(1);
  }
  int dataLength=0,maxElement=0;
  BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  
  //boolean isExit=false;
  
  while (true) {
   try {
    String arrayLength=getInputDataLength(br);
    dataLength = Integer.parseInt(arrayLength);
    if (dataLength < 0){
     System.out.println("\n数组的长度必须大于0:");
     continue;
    }
    break;
               
   } catch (NumberFormatException e) {
    System.out.println("\n重新输入排序数组的长度(只能输入数字):");
    continue;
   } catch (IOException e) {
    e.printStackTrace();
    System.exit(1);
      }
  } 
  template.setDataLength(dataLength); 
  while (true) {
   try {
    String max=getInputMax(br);
    maxElement = Integer.parseInt(max);
    if (dataLength < 0){
     System.out.println("\n数字必须大于0:");
     continue;
    }
    break;
    } catch (NumberFormatException e) {
      System.out.println("\n重新输入数组的元素的最大值(只能输入数字):");
        continue;
    } catch (IOException e) {
      e.printStackTrace();
     System.exit(1);
    }
    
  }
  template.setMaxElement(maxElement);
  int algorithm=0;
  while(true){
     showUsage();
     String selectNumber = null;
     try {
    selectNumber = br.readLine();
    try{
      algorithm = Integer.parseInt(selectNumber);
    }catch (NumberFormatException e) {
      //e.printStackTrace();
      System.out.println("请选择正确的排序算法序号!");
     continue;
    }
    if (algorithm == 0)
     System.exit(0);
    else if(algorithm!=9){
        try {
         template.sortDataByName(SortUtil.getSortNameById(algorithm-1));
        } catch (Exception e) {
         e.printStackTrace();
         System.exit(1);
        }
    }
    else {
        try {
         template.sortDataByAll();
        } catch (Exception e) {
         e.printStackTrace();
         System.exit(1);
        }
    }
     } catch (IOException e) {
     e.printStackTrace();
     System.exit(1);
   }
  } 

 }
 
 
 private static  String getInputDataLength(BufferedReader br) throws IOException{
  System.out.print("输入排序数组的长度:");
  String arrayLength=null;
  arrayLength = br.readLine();
  return arrayLength;
 }
 
 private static  String getInputMax(BufferedReader br) throws IOException {
  System.out.print("输入数组中整数的最大值:");
  //BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  String max=null;
  max = br.readLine();
  return max;
  
 }
 

 private static void showUsage() {
  System.out.println("\n请选择排序算法:");
  System.out.println("  1 直接插入排序 ");
  System.out.println("  2 选择法排序 ");
  System.out.println("  3 冒泡法排序 ");
  System.out.println("  4 快速法排序 ");
  System.out.println("  5 希尔法排序 ");
  System.out.println("  6 堆法排序 ");
  System.out.println("  7 归并排序 ");
  System.out.println("  9 执行所有排序 ");
  System.out.println("  0 退出 ");
 }

}

你可能感兴趣的:(java,算法)