Eilučių klasė neturi jokio metodo, kuris tiesiogiai rūšiuotų eilutę, tačiau mes galime rūšiuoti eilutę taikydami kitus metodus vienas po kito. Eilutė yra simbolių seka. „Java“ programoje String objektai yra nekintantys, o tai reiškia konstantą ir jų negalima pakeisti vieną kartą.
Stygos kūrimas
Yra du būdai sukurti „Java“ eilutę:
- Styga pažodžiui
String s = techcodeview.com;>
- Naudojant naujas raktažodį
String s = new String (techcodeview.com);>
Pastaba: Kaip žinome, String yra nekintamas Java, todėl trečiame žingsnyje turime sukurti naują eilutę.
Metodai:
Yra du metodai, kuriais galime rūšiuoti bet kurią „Java“ eilutę abėcėlės tvarka
romėniškų skaitmenų diagrama 1100
- Nenaudojant sort() metodo
- Naudodami Rūšiuoti() metodas
Iliustracija:
Input string : 'geeksforgeeks' Output string : 'eeeefggkkorss'>
Dabar aptarkime metodus ir įgyvendinkime tą patį.
1 būdas: Nenaudojant sort() metodo
Čia mes pateiksime metodą, kaip rūšiuoti eilutę nenaudojant jokios iš anksto nustatytos logikos. Taigi, tai taip pat tampa svarbiu požiūriu interviu požiūriu.
kas yra svn checkout
Procedūra:
- Konvertuokite eilutę į masyvą naudodami String klasės metodą toCharArray().
- Dabar naudokite įdėtas kilpas, kad patikrintumėte, ar masyvo elementai keičiami.
- Spausdinkite šiuos simbolių masyvo elementus.
Pavyzdys
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 */>
Išvestis:
eeeefggkkorss>
Laiko sudėtingumas : O(n * log n). (kur „n“ yra įvesties eilutės dydis.)
2 būdas: pagal naudojant Rūšiuoti() metodas
2A Naudodami Rūšiuoti() metodas- natūralus rūšiavimas
Procedūra:
- Pagrindinė logika yra toCharArray() metodas eilutės klasę per įvesties eilutę, kad sukurtumėte įvesties eilutės simbolių masyvą.
- Dabar naudok Masyvai.rūšiavimas(char c[]) simbolių masyvo rūšiavimo metodas.
- Norėdami sukurti surūšiuotą eilutę iš simbolių masyvo, naudokite String klasės konstruktorių.
1 pavyzdys
rūšiuoti kibirą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); } }>
Išvestis
Input String : geeksforgeeks Output String : eeeefggkkorss>
2B Autorius naudojant Rūšiuoti() metodas- Pasirinktinis rūšiavimas
Masyvai.rūšiavimas(char c[]) metodas rūšiuoti simbolius pagal jų ASCII reikšmę, galime apibrėžti savo užsakymą Palyginimas rūšiuoti eilutę.
Iliustracija:
Input String : techcodeview.com Output String : eeeefGGkkorss>
Procedūra:
- Konvertuoti įvesties eilutę į Charakteris masyvas. Tiesioginio būdo tai padaryti nėra. Norėdami užpildyti masyvą, naudosime for ciklus.
- Naudokite Masyvai.rūšiavimas(T [ ], lygintuvas c) būdas rūšiuoti simbolių masyvą. Norėdami tai padaryti, turime įgyvendinti palyginti () metodas, pagrįstas mūsų pasirinktiniu rūšiavimo elgesiu.
- Dabar galime naudoti StringBuilder, norėdami konvertuoti simbolių masyvą į eilutę.
2 pavyzdys
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() { // 2 metodas // Simbolių palyginimas @Override public int palyginti(Character c1, Character c2) { // Didžiųjų ir mažųjų raidžių ignoravimas return Character.compare( Character.toLowerCase(c1), Character.toLowerCase(c2)); } }); // StringBuilder naudojimas norint konvertuoti simbolių masyvą į // String StringBuilder sb = new StringBuilder(tempArray.length); for (Chimbolis c : tempArray) sb.append(c.charValue()); return sb.toString(); } // 3 metodas // MAin tvarkyklės metodas public static void main(String[] args) { // Pasirinktinė įvesties eilutė String inputString = 'techcodeview.com'; // 1 metodo iškvietimas įvesties eilutės rūšiavimui // ir saugojimas eilutėje Eilutė outputString = sortString(inputString); // Spausdinti ir rodyti įvesties ir išvesties eilutes System.out.println('Input String : ' + inputString); System.out.println('Išvesties eilutė : ' + outputString); } }>>
Išvestis Input String : techcodeview.com Output String : eeeefGGkkorss>
Pastaba:
turi grąžinti -ve, jei o1 turi būti prieš o2 turi grąžinti +ve, jei o1 turi ateiti po o2 turi grąžinti 0, jei o1 yra lygus o2