Advertisement
Guest User

String Sorting

a guest
Sep 20th, 2016
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.66 KB | None | 0 0
  1. package chapter7;
  2.  
  3. import java.util.*;
  4.  
  5. public class StringSorting {
  6.  
  7.     private static final Random random = new Random();
  8.     private static final char[] symbols = new char[62];
  9.  
  10.     static {
  11.         for (int idx = 0; idx < 10; ++idx)
  12.             symbols[idx] = (char) ('0' + idx);
  13.         for (int idx = 10; idx < 36; ++idx)
  14.             symbols[idx] = (char) ('a' + idx - 10);
  15.         for (int idx = 36; idx < 62; ++idx)
  16.             symbols[idx] = (char) ('A' + idx - 36);
  17.     }
  18.  
  19.     public static void main(String[] args) {
  20.         Scanner sc = new Scanner(System.in);
  21.         System.out.print("Enter array size: ");
  22.         int size = sc.nextInt();
  23.         System.out.print("Min String Length: ");
  24.         int minlen = sc.nextInt();
  25.         System.out.print("Max String Length: ");
  26.         int maxlen = sc.nextInt();
  27.         sc.close();
  28.        
  29.         String baseData[] = generateRandomStrings(size, minlen, maxlen);
  30.         printData("Base Data", baseData);
  31.        
  32.         String data[] = copyArray(baseData);
  33.         sortCaseSensitive(data);
  34.         printData("Case Sensitive Sort", data);
  35.        
  36.         data = copyArray(baseData);
  37.         sortCaseInSensitive(data);
  38.         printData("Case Insensitive Sort", data);
  39.        
  40.     }
  41.  
  42.     private static void sortCaseSensitive(String[] data) {
  43.         for (int i = 0; i < data.length - 1; i++)
  44.             for (int j = i + 1; j < data.length; j++) {
  45.                 if (data[i].compareTo(data[j]) > 0) {
  46.                     String temp = data[i];
  47.                     data[i] = data[j];
  48.                     data[j] = temp;
  49.                 }
  50.             }
  51.     }
  52.  
  53.     private static void sortCaseInSensitive(String[] data) {
  54.         for (int i = 0; i < data.length - 1; i++)
  55.             for (int j = i + 1; j < data.length; j++) {
  56.                 if (data[i].compareToIgnoreCase(data[j]) > 0) {
  57.                     String temp = data[i];
  58.                     data[i] = data[j];
  59.                     data[j] = temp;
  60.                 }
  61.             }
  62.     }
  63.  
  64.     private static String[] copyArray(String[] baseData) {
  65.         String data[] = new String[baseData.length];
  66.         for (int i = 0; i < baseData.length; i++) {
  67.             data[i] = baseData[i];
  68.         }
  69.         return data;
  70.     }
  71.  
  72.     private static String[] generateRandomStrings(int size, int min, int max) {
  73.         String data[] = new String[size];
  74.         for (int i = 0; i < data.length; i++) {
  75.             data[i] = generateString(min, max);
  76.         }
  77.         return data;
  78.     }
  79.  
  80.     private static String generateString(int min, int max) {
  81.         if (min > max)
  82.             throw new IllegalArgumentException("min: " + min + " > max: " + max);
  83.         int length = min + random.nextInt(max - min + 1);
  84.         String x = "";
  85.         for (int i = 0; i < length; i++) {
  86.             x += symbols[random.nextInt(symbols.length)];
  87.         }
  88.         return x;
  89.     }
  90.  
  91.     private static void printData(String header, String[] data) {
  92.         System.out.println(header);
  93.         System.out.println();
  94.         for (int i = 0; i < data.length; i++) {
  95.             System.out.println(data[i]);
  96.         }
  97.         System.out.println();
  98.         System.out.println();
  99.     }
  100.  
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement