Quick Sort는 이진 아이디어를 기반으로 한 버블 정렬을 개선한 것입니다. 주요 아이디어는 베이스를 설정하고 베이스보다 작은 숫자를 베이스 왼쪽에 배치하고 베이스보다 큰 숫자를 베이스 오른쪽에 배치한 다음 숫자의 두 부분을 추가로 정렬하여 달성하는 것입니다. 배열 정렬.
효율성이 높다는 장점 이 있으며, 이름에서 알 수 있듯이 퀵 정렬은 가장 빠른 정렬 알고리즘으로, 공간 복잡도가 O(logn)로 가장 좋습니다. 배열의 경우 코드가 비교적 간단합니다.
단점 은 초기 시퀀스가 정렬되거나 기본적으로 정렬되면 시간 복잡도가 O(n^2)로 떨어진다는 것입니다.
예를 들어:
publicclassMain{//빠른 행 구현 방법 publicstaticvoidquickRow(int[]array,intlow,inthigh){inti,j,pivot;//조건 종료 if(low>=high){return;}i=low;j=high;/ /선택한 노드, 여기서 선택한 배열의 첫 번째 숫자가 노드로 사용됩니다.ivot=array[low];while(i<j){//오른쪽에서 왼쪽으로 노드보다 작은 숫자를 찾습니다. 루프에서 발견되거나 i =jwhile(array[j]>=pivot&&i<j){j--;}//루프 끝에서 왼쪽에서 오른쪽으로 노드보다 큰 숫자를 찾습니다. , 그것이 발견되었거나 i=jwhile(array[i]<=pivot&&i <j){i++;}//i!=j 명령어가 발견되면 두 숫자를 교환합니다. if(i<j){inttemp=array [i];array[i]=array[j];array [j]=temp;}}//i==j 사이클 종료, 교환 노드 수 및 미팅 포인트 수 array[low]=array [i];array[i]=pivot;//array "divided" "Two halfs", 그런 다음 위 작업을 반복합니다.quickRow(array,low,i-1);quickRow(array,i+1,high);} publicstaticvoidmain(String[]args){int[]array={6,17, 38,59,2,10};intlow=0,high=array.length-1;quickRow(array,low,high);for( inti:배열){System.out.println(i);}}}
실행 결과는 다음과 같습니다.
2610173859