Clasa string nu are nicio metodă care sortează direct un șir, dar putem sorta un șir aplicând alte metode una după alta. Șirul este o secvență de caractere. În java, obiectele String sunt imuabile, ceea ce înseamnă o constantă și nu pot fi modificate odată create.
Crearea unui șir
Există două moduri de a crea un șir în Java:
- Literal șir
String s = techcodeview.com;>
- Folosind nou cuvânt cheie
String s = new String (techcodeview.com);>
Notă: După cum știm că String este imuabil în java, prin urmare, în pasul al treilea, trebuie să creăm un șir nou.
Metode:
Există două metode prin care putem sorta orice șir în java alfabetic
alisa manyonok
- Fără a folosi metoda sort().
- Prin utilizarea metoda sort().
Ilustrare:
Input string : 'geeksforgeeks' Output string : 'eeeefggkkorss'>
Acum haideți să discutăm despre metode și să le implementăm.
Metoda 1: Fără a folosi metoda sort().
Aici vom stabili o abordare pentru sortarea unui șir fără a folosi nicio logică predefinită. Deci, devine, de asemenea, o abordare importantă din perspectiva perceptivă a interviului.
comanda unix top
Procedură:
- Convertiți șirul într-o matrice cu ajutorul metodei toCharArray() din clasa String
- Acum utilizați bucle imbricate pentru a verifica dacă elementele de schimb ale unei matrice.
- Imprimați aceste elemente de matrice de caractere.
Exemplu
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 */> Ieșire:
eeeefggkkorss>
Complexitatea timpului : O(n * log n). (unde „n” este dimensiunea șirului de intrare.)
Metoda 2: Prin folosind metoda sort().
2A Prin utilizarea metoda sort() - sortare naturală
Procedură:
- Logica principală este să metoda toCharArray(). a clasei String peste șirul de intrare pentru a crea o matrice de caractere pentru șirul de intrare.
- Acum folosește Arrays.sort(car c[]) metoda de sortare a matricei de caractere.
- Utilizați constructorul clasei String pentru a crea un șir sortat dintr-o matrice char.
Exemplul 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); } }> Ieșire
Input String : geeksforgeeks Output String : eeeefggkkorss>
2B De către folosind metoda sort() - Sortare personalizată
Arrays.sort(car c[]) metoda sortării caracterelor pe baza valorii lor ASCII, putem defini personalitatea noastră Comparator pentru a sorta un șir.
Ilustrare:
liste în java
Input String : techcodeview.com Output String : eeeefGGkkorss>
Procedură:
- Convertiți șirul de intrare în Caracter matrice. Nu există o metodă directă de a face acest lucru. Vom folosi bucla for pentru a umple matricea.
- Utilizare Arrays.sort(T [ ], Comparator c) metoda de sortare a matricei de caractere. Pentru aceasta, trebuie să implementăm comparaţie() metoda bazată pe comportamentul nostru personalizat de sortare.
- Acum putem folosi StringBuilder pentru a converti matricea Character în String.
Exemplul 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 // Pentru a compara caracterele @Override public int compare(Caracter c1, Caracter c2) { // Ignorând caracterul returnat Character.compare( Character.toLowerCase(c1), Character.toLowerCase(c2)); } }); // Folosind StringBuilder pentru a converti matricea de caractere în // String StringBuilder sb = new StringBuilder(tempArray.length); pentru (Caracter c: tempArray) sb.append(c.charValue()); return sb.toString(); } // Metoda 3 // Metoda driverului principal public static void main(String[] args) { // Șir de intrare personalizat String inputString = 'techcodeview.com'; // Apelarea metodei 1 pentru a sorta șirul de intrare // și stocarea într-un șir String outputString = sortString(inputString); // Imprimă și afișează șirurile de intrare și de ieșire System.out.println('Input String : ' + inputString); System.out.println('Șir de ieșire: ' + șir de ieșire); } }>>>
Ieșire Input String : techcodeview.com Output String : eeeefGGkkorss>
Notă:
trebuie să se întoarcă -ve dacă o1 trebuie să vină înainte de o2 trebuie să returneze +ve dacă o1 trebuie să vină după o2 trebuie să returneze 0 dacă o1 este egal cu o2