이 기사의 예는 Java 정렬 알고리즘 요약의 정렬을 알려줍니다. 참조를 위해 모든 사람을 위해 공유하십시오. 특정 분석은 다음과 같습니다.
1991 년 Stanford University의 컴퓨터 과학과의 컴퓨터 과학과 교수 인 Robert W. Flayd와 1964 년 J. Williams는 유명한 힙 정렬 (Heap Sort) Essence를 공동 발명했습니다. 이 기사는 주로 힙 분류에 Java를 소개합니다.
Heapsort는 File (HEAP) 데이터 구조에 의해 설계된 분류 알고리즘을 지칭하며, 배열의 특성을 사용하여 지정된 인덱스의 요소를 빠르게 찾을 수 있습니다. 스태킹 순서는 불안정한 정렬 방법이며 최악의 시간 복잡성은 O (NLOG2N)입니다.
스태킹 순서는 큰 파일 (또는 작은 뿌리 파일) 파일 상단 레코드의 키워드의 최대 (또는 최소값)의 특성을 사용하여 현재 무질서 영역에서 최대 (또는 최소) 키워드의 레코드를 간단하게 만듭니다.
(1) 큰 더미와 분류 된 기본 아이디어
먼저 초기 파일 R [1..N]을 큰 루트 파일로 구축하여 새로운 무질서한 영역 r [1 .. N-1] 및 질서있는 영역 r [n]을 얻습니다. r [1 .. n-1] .keys≤r [n] .key를 만족하십시오
new 새로운 루트 R [1]은 교환 후 힙의 특성을 위반할 수 있으므로, 현재의 비 명령 영역 r [1 .. n-1]는 힙으로 조정되어야합니다. 그런 다음 R [1..n-1]의 키워드의 키워드는 다시 마지막 레코드 R [N-1]과 교환하여 새로운 무질서한 영역 R [1 ..... N-2를 얻었습니다. ] 그리고 질서있는 영역 r [n-1..n], 그리고 여전히 관계 r [1 ..- .. n-2] .keys≤r [n-1..n] .keys, 또한 r to r [1..n-2] 힙에 적응하십시오.
님프
무질서한 영역에 요소가 하나만있을 때까지.
(2) 큰 뿌리의 분류 알고리즘의 기본 작동 :
① 초기화 작업 : 초기 힙에 R [1..N]의 구성;
② 각 종류의 기본 수술 : 현재 무질서한 영역에서 파일 레코드 r [1]의 마지막 기록을 교환 한 다음 새로운 무질서 영역을 파일 (재건축이라고도 함)으로 조정하십시오.
알아채다:
n-1 분류를 수행하고 더 큰 N-1 키워드를 선택하여 파일을 순서대로 늘리십시오.
② 작은 뿌리로 분류하는 것은 큰 뿌리와 비슷하지만 분류 결과는 감소하고 질서 정연합니다. 스태킹 순서와 직접적인 분류 선택은 반대입니다. 언제라도 무질서한 영역은 항상 질서 영역 앞에 있으며, 질서 영역은 원래 벡터의 후면에서 전체 벡터로 점차 확장됩니다.
코드 구현 :
공개 클래스 테스트 {public static int [] 힙 = {10, 32, 9, 5, 7, 0, 4, 3}; {int i; // 사이클 수 변수 int index = heap.length; +) .printf ( "%3s", println ( ""); (i = 1; i <index -1; i ++) system.out.printf ( "%3s", heap); void crop (int root) {int i, j; submp = heap finish의 루트 값 = 0; [j]) 마감 = 1; ; // parent node = root value} public static void heapsort (int i, j, temp; ; // 스택 정렬 (i = index-1; i> = 1; i ------- {heap의 루트 값 및 마지막 값 교환 힙 = 헤드; 힙 [1] = TestHeap (1, i); "%3s", heap [j]);
힙은 나무로 간주 될 수 있으며 높이의 노드 높이는 노드에서 잎 노드까지 가장 긴 단순 드롭 경로의 수로 정의 될 수 있습니다. 뿌리. 힙 구조의 일부 기본 작업 중 일부는 대부분 O (LGN)의 트리 높이에 비례합니다. 이 기사를 읽음으로써 도와 드리겠습니다.
이 기사는 모든 사람의 Java 프로그램 설계에 도움이되기를 바랍니다.