A) 원칙 : 매번 정렬 할 레코드에서 가장 작은 요소를 선택하고 모든 레코드가 정렬 될 때까지 정렬 된 시퀀스의 끝에 순서대로 배치하십시오. 즉, 각 여행은 N-I+1 (i = 1, 2, ... n-1) 레코드 중 주문한 시퀀스에서 I-TH 레코드로 선택됩니다. 이 아이디어를 기반으로 한 알고리즘에는 주로 간단한 선택 분류, 트리 선택 분류 및 힙 분류가 포함됩니다. (이것은 일반적인 간단한 선택 분류 전용입니다)
b) 간단한 분류 선택의 기본 아이디어 : 배열 주어진 배열 : int [] arr = {n data in}; 처음으로 정렬 할 때 Data에서 가장 작은 데이터를 선택하여 ARR [1] ~ ARR [N]을 선택하고 ARR [1]과 교환하십시오. 두 번째로, 데이터에서 가장 작은 데이터를 정렬 할 데이터를 선택하고 [2] ~ ARR [n]을 r [2]로 교환합니다. 그러므로 정렬 할 데이터에서 가장 작은 데이터를 선택하고 [i] ~ arr [n]을 선택하고 모든 정렬이 완료 될 때까지 r [i]와 교환하십시오.
c) 예 : 배열 int [] arr = {5,2,8,4,9,1};
---------------------------------------------------------------------
첫 번째 순서 : 원본 데이터 : 528491
최소 데이터 1, 먼저 1, 즉 1 및 5 교환 위치,
정렬 결과 : 128495
---------------------------------------------------------------------
두 번째 순서 :
1 {28495} 이외의 데이터는 비교되고 2는 가장 작고,
정렬 결과 : 128495
---------------------------------------------------------------------
세 번째 순서 :
1과 2 이외의 데이터는 {8495}, 4는 최소, 8과 4는 교환됩니다.
정렬 결과 : 124895
---------------------------------------------------------------------
네 번째 순서 :
1, 2, 4 이외의 다른 데이터는 {895}, 5는 최소, 8 및 5는 교환됩니다.
정렬 결과 : 124598
---------------------------------------------------------------------
다섯 번째 주문 :
1, 2, 4, 5 이외의 다른 데이터는 비교되고, 8은 최소, 8 및 9는 교환됩니다.
정렬 결과 : 124589
---------------------------------------------------------------------
참고 : 각 순서에서 가장 작은 숫자를 얻는 방법 : 루프를 비교하려면 세 번째 변수 온도를 정의하십시오. 먼저 처음 두 숫자를 비교하고 작은 숫자를 온도에 넣은 다음 온도를 사용하여 나머지 데이터와 비교하십시오. Temp보다 작은 데이터가 나타나면 Temp의 원래 데이터 대신 사용하십시오. 자세한 내용은 아래 코드 예제를 참조하면 정렬을 배우기 전에 For Loop 문을 배웠다고 생각합니다. 이런 식으로, 여기에서 이해하기 쉽습니다.
Code example:
// 공개 클래스 선택 정렬 선택 {public static void main (String [] args) {int [] arr = {1,3,2,45,65,33,12}; System.out.println ( "교환 전 :"); for (int num : arr) {system.out.print (num+""); } // 정렬 최적화 (int i = 0; i <arr.length -1; i ++) {// i -th order int k = i를 정렬합니다. for (int j = k+1; // 지금까지 발견 된 최소값의 위치}}} // 내부 루프가 끝난 후,이 루프의 최소 수를 찾은 후 (i! = k) {// [i] 및 a [k] int temp = arr [i]; arr [i] = arr [k]; arr [k] = 온도; }} system.out.println (); System.out.println ( "스왑 후 :"); for (int num : arr) {system.out.print (num+""); }}}실행중인 결과의 스크린 샷 :
정렬의 시간 복잡성을 선택하십시오. 간단한 선택 종류의 비교 횟수는 시퀀스의 초기 정렬과 관련이 없습니다. 분류 될 시퀀스에 N 요소가 있다고 가정하면, 비교 수는 항상 n (n-1)/2입니다. 움직임의 수는 시퀀스의 초기 정렬과 관련이 있습니다. 시퀀스가 양수 일 때, 움직임의 수는 가장 적고, 이는 0이다. 시퀀스가 반비례 적으로 시퀀싱되면, 대부분의 움직임은 3n (n-1)/2이다.
요약하면, 간단한 분류의 시간 복잡성은 O (n2)입니다.