Virkņu klasei nav metodes, kas tieši kārto virkni, taču mēs varam kārtot virkni, izmantojot citas metodes vienu pēc otras. Virkne ir rakstzīmju secība. Java programmā String objekti ir nemainīgi, kas nozīmē konstanti, un tos nevar mainīt pēc izveides.
Virknes izveide
Ir divi veidi, kā izveidot virkni Java:
- Virkne burtiski
String s = techcodeview.com;>
- Izmantojot jauns atslēgvārds
String s = new String (techcodeview.com);>
Piezīme: Kā mēs zinām, ka Strings ir nemainīgs Java, tāpēc trešajā darbībā mums ir jāizveido jauna virkne.
Metodes:
Ir divas metodes, ar kurām mēs varam kārtot jebkuru Java virkni alfabētiskā secībā
kabīnes algoritms
- Neizmantojot sort() metodi
- Izmantojot sort() metode
Ilustrācija:
Input string : 'geeksforgeeks' Output string : 'eeeefggkkorss'>
Tagad apspriedīsim metodes un īstenosim tās pašas.
1. metode: Neizmantojot sort() metodi
Šeit mēs izstrādāsim pieeju virknes kārtošanai, neizmantojot iepriekš definētu loģiku. Tādējādi tā kļūst arī par svarīgu pieeju no intervijas uztveres viedokļa.
shloka mehta izglītība
Procedūra:
- Pārveidojiet virkni par masīvu, izmantojot klases String metodi toCharArray().
- Tagad izmantojiet ligzdotās cilpas, lai pārbaudītu masīva elementu apmaiņu.
- Izdrukājiet šos rakstzīmju masīva elementus.
Piemērs
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 */>
Izvade:
eeeefggkkorss>
Laika sarežģītība : O(n * log n). (kur “n” ir ievades virknes lielums.)
2. metode: Autors izmantojot sort() metode
2A Izmantojot kārtot() metode- dabiskā šķirošana
Procedūra:
- Galvenā loģika ir toCharArray() metode klasei String virs ievades virknes, lai izveidotu rakstzīmju masīvu ievades virknei.
- Tagad izmantojiet Arrays.sort(char c[]) rakstzīmju masīva kārtošanas metode.
- Izmantojiet String klases konstruktoru, lai izveidotu sakārtotu virkni no char masīva.
1. piemērs
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); } }>
Izvade
Input String : geeksforgeeks Output String : eeeefggkkorss>
2B Autors izmantojot kārtot() metode- Pielāgota šķirošana
Arrays.sort(char c[]) metode kārtot rakstzīmes, pamatojoties uz to ASCII vērtību, mēs varam definēt savu pielāgoto Salīdzinātājs lai sakārtotu virkni.
Ilustrācija:
java stīgu klase
Input String : techcodeview.com Output String : eeeefGGkkorss>
Procedūra:
- Pārvērst ievades virkni uz Raksturs masīvs. Nav tiešas metodes, kā to izdarīt. Mēs izmantosim cilpu, lai aizpildītu masīvu.
- Izmantot Arrays.sort(T [ ], Comparator c) rakstzīmju masīva kārtošanas metode. Lai to izdarītu, mums tas ir jāīsteno salīdzināt() metode, kuras pamatā ir mūsu pielāgotā šķirošanas darbība.
- Tagad mēs varam izmantot StringBuilder, lai pārvērstu rakstzīmju masīvu par virkni.
2. piemērs
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. metode // Lai salīdzinātu rakstzīmes @Override public int salīdzināt(Character c1, Character c2) { // Ignorējot reģistru return Character.compare( Character.toLowerCase(c1), Character.to LowerCase(c2)); } }); // StringBuilder izmantošana rakstzīmju masīva konvertēšanai uz // String StringBuilder sb = new StringBuilder(tempArray.length); for (Character c : tempArray) sb.append(c.charValue()); return sb.toString(); } // 3. metode // MAin draivera metode public static void main(String[] args) { // Pielāgota ievades virkne String inputString = 'techcodeview.com'; // 1. metodes izsaukšana ievades virknes kārtošanai // un saglabāšana virknē String outputString = sortString(inputString); // Drukāt un parādīt ievades un izvades virknes System.out.println('Input String : ' + inputString); System.out.println('Izvades virkne : ' + izvades virkne); } }>
Izvade
Input String : techcodeview.com Output String : eeeefGGkkorss>
Piezīme:
public int compare(Object o1, Object o2) {} >
- ir jāatgriež -ve, ja o1 ir jānāk pirms o2
- ir jāatgriež +ve, ja o1 ir jānāk pēc o2
- ir jāatgriež 0, ja o1 ir vienāds ar o2