Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package chapter7;
- import java.util.*;
- public class StringSorting {
- private static final Random random = new Random();
- private static final char[] symbols = new char[62];
- static {
- for (int idx = 0; idx < 10; ++idx)
- symbols[idx] = (char) ('0' + idx);
- for (int idx = 10; idx < 36; ++idx)
- symbols[idx] = (char) ('a' + idx - 10);
- for (int idx = 36; idx < 62; ++idx)
- symbols[idx] = (char) ('A' + idx - 36);
- }
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- System.out.print("Enter array size: ");
- int size = sc.nextInt();
- System.out.print("Min String Length: ");
- int minlen = sc.nextInt();
- System.out.print("Max String Length: ");
- int maxlen = sc.nextInt();
- sc.close();
- String baseData[] = generateRandomStrings(size, minlen, maxlen);
- printData("Base Data", baseData);
- String data[] = copyArray(baseData);
- sortCaseSensitive(data);
- printData("Case Sensitive Sort", data);
- data = copyArray(baseData);
- sortCaseInSensitive(data);
- printData("Case Insensitive Sort", data);
- }
- private static void sortCaseSensitive(String[] data) {
- for (int i = 0; i < data.length - 1; i++)
- for (int j = i + 1; j < data.length; j++) {
- if (data[i].compareTo(data[j]) > 0) {
- String temp = data[i];
- data[i] = data[j];
- data[j] = temp;
- }
- }
- }
- private static void sortCaseInSensitive(String[] data) {
- for (int i = 0; i < data.length - 1; i++)
- for (int j = i + 1; j < data.length; j++) {
- if (data[i].compareToIgnoreCase(data[j]) > 0) {
- String temp = data[i];
- data[i] = data[j];
- data[j] = temp;
- }
- }
- }
- private static String[] copyArray(String[] baseData) {
- String data[] = new String[baseData.length];
- for (int i = 0; i < baseData.length; i++) {
- data[i] = baseData[i];
- }
- return data;
- }
- private static String[] generateRandomStrings(int size, int min, int max) {
- String data[] = new String[size];
- for (int i = 0; i < data.length; i++) {
- data[i] = generateString(min, max);
- }
- return data;
- }
- private static String generateString(int min, int max) {
- if (min > max)
- throw new IllegalArgumentException("min: " + min + " > max: " + max);
- int length = min + random.nextInt(max - min + 1);
- String x = "";
- for (int i = 0; i < length; i++) {
- x += symbols[random.nextInt(symbols.length)];
- }
- return x;
- }
- private static void printData(String header, String[] data) {
- System.out.println(header);
- System.out.println();
- for (int i = 0; i < data.length; i++) {
- System.out.println(data[i]);
- }
- System.out.println();
- System.out.println();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement