logo

Razvrsti niz v Javi (2 različna načina)

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
  1. Brez uporabe metode sort().
  2. 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:

  1. Pretvorite niz v matriko s pomočjo metode toCharArray() razreda String
  2. Zdaj uporabite ugnezdene zanke, da preverite, ali obstajajo zamenjavni elementi matrike.
  3. 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:

  1. Glavna logika je, da metoda toCharArray(). razreda String nad vhodnim nizom, da ustvarite niz znakov za vhodni niz.
  2. Zdaj uporabite Arrays.sort(char c[]) metoda za razvrščanje niza znakov.
  3. 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:

  1. Pretvori vhodni niz v Znak niz. Neposredne metode za to ni. Za zapolnitev matrike bomo uporabili zanko for.
  2. 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.
  3. 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