Computer >> 컴퓨터 >  >> 프로그램 작성 >> 프로그램 작성

기수 정렬


기수 정렬은 비비교 정렬 알고리즘입니다. 이 정렬 알고리즘은 동일한 위치와 값을 공유하는 숫자를 그룹화하여 정수 키에서 작동합니다. 기수는 숫자 체계의 기초입니다. 십진법에서 기수 또는 기수는 10이라는 것을 알고 있습니다. 따라서 일부 십진법을 정렬하려면 숫자를 저장할 10개의 위치 상자가 필요합니다.

기수 정렬 기법의 복잡성

  • 시간 복잡도:O(nk)
  • 공간 복잡성:O(n+k)

입력 및 출력

입력:정렬되지 않은 목록:802 630 20 745 52 300 612 932 78 187출력:정렬 전 데이터:802 630 20 745 52 300 612 932 78 287정렬 후 데이터:802 630 20 745 52 300 612 932 78 287> 

알고리즘

radixSort(배열, 크기, maxDigit)

입력 - 데이터 배열 및 배열의 ​​총 개수, 최대 개수의 자릿수

출력 - 정렬된 배열입니다.

10개의 목록을 포켓으로 정의 시작:=0 to max -1 do m =10^i+1 p :=10^i for j :=0 to n-1 do temp :=array[j] mod m index :=temp / p pocket[index].append(array[j]) done count :=j의 경우 0 :=0에서 기수는 pocket[j]가 비어 있지 않은 동안 수행합니다. array[count] :=다음의 첫 번째 노드 가져오기 pocket[j]를 삭제하고 count :=count +1 doneEnd

예시

#include#include#includenamespace std;void display(int *array, int size) 사용 { for(int i =0; i 포켓[10]; //10진수의 기수는 10 for(i =0; i> n; cout <<"요소의 최대 자릿수를 입력하세요:"; 신>> 최대; 정수 [n]; // 주어진 수의 요소로 배열 생성 cout <<"Enter elements:" <> arr[i]; } cout <<"정렬 전 데이터:"; 디스플레이(arr, n); radixSort(arr, n, 최대); cout <<"정렬 후 데이터:"; 디스플레이(arr, n);}

출력

요소 수 입력:10요소의 최대 자릿수 입력:3요소 입력:802 630 20 745 52 300 612 932 78 187정렬 전 데이터:802 630 20 745 52 300 618 187 이후 데이터 612 630 745 802 932