logo

Rūšiuoti eilutę Java (2 skirtingais būdais)

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
  1. Nenaudojant sort() metodo
  2. 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:

  1. Konvertuokite eilutę į masyvą naudodami String klasės metodą toCharArray().
  2. Dabar naudokite įdėtas kilpas, kad patikrintumėte, ar masyvo elementai keičiami.
  3. 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:

  1. Pagrindinė logika yra toCharArray() metodas eilutės klasę per įvesties eilutę, kad sukurtumėte įvesties eilutės simbolių masyvą.
  2. Dabar naudok Masyvai.rūšiavimas(char c[]) simbolių masyvo rūšiavimo metodas.
  3. 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:

  1. Konvertuoti įvesties eilutę į Charakteris masyvas. Tiesioginio būdo tai padaryti nėra. Norėdami užpildyti masyvą, naudosime for ciklus.
  2. 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.
  3. 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