Razred nizov nima nobene metode, ki bi neposredno razvrstila niz, vendar lahko niz razvrstimo z uporabo drugih metod drugo za drugo. Niz je zaporedje znakov. V Javi so objekti niza nespremenljivi, kar pomeni konstanto in jih ni mogoče spremeniti, ko so ustvarjeni.
Ustvarjanje niza
Obstajata dva načina za ustvarjanje niza v Javi:
- String literal
String s = techcodeview.com;>
- Uporaba novo ključna beseda
String s = new String (techcodeview.com);>
Opomba: Kot vemo, je String nespremenljiv v Javi, zato moramo v tretjem koraku ustvariti nov niz.
Metode:
Obstajata dve metodi, s katerima lahko kateri koli niz v Javi razvrstimo po abecedi
oblikovalnik nizov
- Brez uporabe metode sort().
- Z uporabo metoda sort().
Ilustracija:
Input string : 'geeksforgeeks' Output string : 'eeeefggkkorss'>
Zdaj pa se pogovorimo o metodah in uporabimo isto.
1. način: Brez uporabe metode sort().
Tukaj bomo postavili pristop za razvrščanje niza brez uporabe vnaprej določene logike. Tako postane tudi pomemben pristop z vidika intervjuja.
ime izdelkov za ličenje
Postopek:
- Pretvorite niz v matriko s pomočjo metode toCharArray() razreda String
- Zdaj uporabite ugnezdene zanke, da preverite, ali obstajajo zamenjavni elementi matrike.
- Natisnite te elemente niza znakov.
Primer
Java // Java program for Sorting a String without using any inbuilt sorting functions import java.io.*; class StringSort { //The Merge Function, handling the core compare & copy logic void merge(char arr[], int l, int m, int r) { int n1 = m - l + 1; int n2 = r - m; char L[] = new char[n1]; char R[] = new char[n2]; //Logic for backing up to temp arrays for (int i = 0; i < n1; ++i) L[i] = arr[l + i]; for (int j = 0; j < n2; ++j) R[j] = arr[m + 1 + j]; int i = 0, j = 0; int k = l; //Logic to compare and copy. The core Merge Logic of the Merge sort. while (i < n1 && j < n2) { if (L[i] <= R[j]) { arr[k] = L[i]; i++; } else { arr[k] = R[j]; j++; } k++; } //Logic to copy remaining elements of L[] while (i < n1) { arr[k] = L[i]; i++; k++; } //Logic to copy remaining elements of R[] while (j < n2) { arr[k] = R[j]; j++; k++; } } //The main Merge Sort function from where the sorting begins void mergeSort(char arr[], int l, int r) { if (l < r) { // Find the middle point int m = l + (r - l) / 2; // Sort first and second halves mergeSort(arr, l, m); mergeSort(arr, m + 1, r); // Merge the sorted halves merge(arr, l, m, r); } } // A utility function to print char array of size n static void printArray(char arr[]) { int n = arr.length; for (int i = 0; i < n; ++i) System.out.print(arr[i] + ' '); System.out.println(); } // Driver code public static void main(String args[]) { String inputString = 'geeksforgeeks'; char arr[] = inputString.toCharArray(); System.out.println('Given array is'); printArray(arr); StringSort ob = new StringSort(); ob.mergeSort(arr, 0, arr.length - 1); System.out.println('
Sorted array is'); printArray(arr); } } /* This code is contributed by Nikhil B */>
Izhod:
eeeefggkkorss>
Časovna zapletenost : O(n * log n). (kjer je 'n' velikost vhodnega niza.)
2. način: z uporabljati metoda sort().
2A Z uporabo sort() metoda- naravno sortiranje
numpy mean
Postopek:
- Glavna logika je, da metoda toCharArray(). razreda String nad vhodnim nizom, da ustvarite niz znakov za vhodni niz.
- Zdaj uporabite Arrays.sort(char c[]) metoda za razvrščanje niza znakov.
- Uporabite konstruktor razreda String, da ustvarite razvrščeni niz iz matrike znakov.
Primer 1
Java // Java program to Sort a String Alphabetically // Using toCharArray() method // With using the sort() method // Importing Arrays class from java.util package import java.util.Arrays; // Main class public class GFG { // Method 1 // To sort a string alphabetically public static String sortString(String inputString) { // Converting input string to character array char tempArray[] = inputString.toCharArray(); // Sorting temp array using Arrays.sort(tempArray); // Returning new sorted string return new String(tempArray); } // Method 2 // Main driver method public static void main(String[] args) { // Custom string as input String inputString = 'geeksforgeeks'; String outputString = sortString(inputString); // Print and display commands // Input string System.out.println('Input String : ' + inputString); // Output string System.out.println('Output String : ' + outputString); } }>
Izhod
Input String : geeksforgeeks Output String : eeeefggkkorss>
2B avtor uporabljati sort() metoda- Razvrščanje po meri
Arrays.sort(char c[]) metodo razvrstite znake glede na njihovo vrednost ASCII, lahko definiramo po meri Primerjalnik za razvrščanje niza.
Ilustracija:
Input String : techcodeview.com Output String : eeeefGGkkorss>
Postopek:
- Pretvori vhodni niz v Znak niz. Neposredne metode za to ni. Za zapolnitev matrike bomo uporabili zanko for.
- Uporaba Arrays.sort(T [ ], primerjalnik c) metoda za razvrščanje niza znakov. Za to moramo izvajati primerjaj() metoda, ki temelji na našem vedenju razvrščanja po meri.
- Zdaj lahko uporabimo StringBuilder za pretvorbo matrike znakov v niz.
Primer 2
Java // Java Program to Sort a Mixed String Containing // Uppercase and Lowercase Characters // Importing required classes import java.util.Arrays; import java.util.Comparator; // Main class class GFG { // Method 1 // To sort a mixed string public static String sortString(String inputString) { // Converting input string to Character array Character tempArray[] = new Character[inputString.length()]; for (int i = 0; i < inputString.length(); i++) { tempArray[i] = inputString.charAt(i); } // Sort, ignoring case during sorting Arrays.sort(tempArray, new Comparator() { // Metoda 2 // Za primerjavo znakov @Override public int compare(Character c1, Character c2) { // Ignoriranje velikih in malih črk return Character.compare( Character.toLowerCase(c1), Character.toLowerCase(c2)); } }); // Uporaba StringBuilderja za pretvorbo niza znakov v // String StringBuilder sb = new StringBuilder(tempArray.length); za (Znak c : tempArray) sb.append(c.charValue()); vrni sb.toString(); } // Metoda 3 // Metoda gonilnika MAin public static void main(String[] args) { // Vnosni niz po meri String inputString = 'techcodeview.com'; // Klicanje metode 1 za razvrščanje vhodnega niza // in shranjevanje v niz String outputString = sortString(inputString); // Natisni in prikaže vhodne in izhodne nize System.out.println('Vhodni niz : ' + inputString); System.out.println('Izhodni niz: ' + outputString); } }>
Izhod
Input String : techcodeview.com Output String : eeeefGGkkorss>
Opomba:
public int compare(Object o1, Object o2) {}>
- morajo vrniti -ve, če mora biti o1 pred o2
- morajo vrniti +ve, če mora biti o1 za o2
- morajo vrniti 0, če je o1 enako o2