Maison >Java >JavaQuestions d'entretien >Interview de Meituan : S'il vous plaît, écrivez à la main un programme rapide, j'ai été choqué !
Aujourd'hui, l'intervieweur m'a demandé d'écrire un tri rapide sur place. La scène est la suivante :
Intervieweur : Continuons à parler de structures de données et d'algorithmes. (Tout en parlant, il a retourné mon CV et m'a tendu un stylo, ce qui signifie qu'il m'a demandé d'écrire au dos de mon CV)
Rookie moi : Que veux-tu dire ? L'écrire ici ? (Montrant le CV)
Intervieweur : Ouais
Moi recrue : Non
Intervieweur : D'accord, c'est tout pour l'interview d'aujourd'hui
Moi recrue : (Je suis très en colère, je veux le mettre sur mon plan de gestion du travail reprendre Écrire du code ? ) Shadiao
Intervieweur : (Avec le recul, confus)
Pensez-y, je suis encore trop jeune, ce ne serait pas comme ça maintenant. Écrivez simplement, ce n’est qu’un morceau de papier de toute façon.
En fait, bien que la file d'attente rapide soit simple, je suppose que beaucoup de gens ne peuvent pas l'écrire à la main. Est-ce difficile ? Il y a beaucoup de gens qui peuvent l'écrire à la main sur place de plusieurs manières.
Je suis un débutant, mais je peux encore écrire à la main. Après tout, avant l'entretien, j'ai juste délibérément préparé "Écriture rapide par dictée".
Maintenant, analysons et analysons ---- tri rapide.
De l'Encyclopédie :
Le tri rapide a été proposé par C. A. R. Hoare en 1962. Son idée de base est de diviser les données à trier en deux parties indépendantes via un tri. Toutes les données d'une partie sont plus petites que toutes les données de l'autre partie, puis d'utiliser cette méthode pour séparer rapidement les deux parties des données. . Tri, l'ensemble du processus de tri peut être effectué [de manière récursive], de sorte que l'ensemble des données devienne une séquence ordonnée.
C’est assez difficile de comprendre ce concept.
Cela peut être compris comme ceci :
Le tri rapide est une version améliorée du tri à bulles. L'ensemble du processus consiste à supprimer et à réparer les éléments, à les démolir et à les réparer, à les démolir et à les réparer, jusqu'à ce que tous les éléments atteignent un état ordonné.
Idée de base :
Prenez d'abord un nombre de la séquence comme numéro de base, puis effectuez un partitionnement par taille ;
Dans le processus de partitionnement, tous les nombres supérieurs à ce nombre sont placés à sa droite, et les nombres inférieurs à ce nombre ; ou égal à celui-ci sont Mettez-les tous à gauche ;
Répétez la deuxième étape pour les intervalles gauche et droit jusqu'à ce qu'il n'y ait qu'un seul nombre dans chaque intervalle et que le tri soit terminé.
Démontons-le étape par étape à travers des images et des textes.
Prenons [4,1,6,2,9,3]
ce tableau comme exemple.
Premier passage :
L'ordre actuel du tableau est [3, 1, 2, 4, 9, 6].
Étape suivante :
2. L'ensemble du processus de la méthode de tri rapide
3.
import java.util.Arrays; public class QuickSortDemo { //四个步骤: //1.比较startIndex和endIndex,更喜欢理解为校验 //2.找出基准 //3.左边部分排序 //4.右边排序 public static void quickSort(int[] arr, int startIndex, int endIndex) { if (startIndex < endIndex) { //找出基准 int partition = partition(arr, startIndex, endIndex); //分成两边递归进行 quickSort(arr, startIndex, partition - 1); quickSort(arr, partition + 1, endIndex); } } //找基准 private static int partition(int[] arr, int startIndex, int endIndex) { int pivot = arr[startIndex]; int left = startIndex; int right = endIndex; //等于就没有必要排序 while (left != right) { while (left < right && arr[right] > pivot) { right--; } while (left < right && arr[left] <= pivot) { left++; } //找到left比基准大,right比基准小,进行交换 if (left < right) { swap(arr, left, right); } } //第一轮完成,让left和right重合的位置和基准交换,返回基准的位置 swap(arr, startIndex, left); return left; } //两数交换 public static void swap(int[] arr, int i, int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } public static void main(String[] args) { int[] a = {3, 1, 2, 4, 9, 6}; quickSort(a, 0, a.length - 1); //输出结果 System.out.println(Arrays.toString(a)); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!