C에서 기수 정렬 프로그램을 가장 잘 구현하는 방법은 무엇입니까?



이 기사에서는 C에서 기수 정렬 프로그램을 소개하고 더 나은 이해를 위해 프로그래밍 방식 데모를 따라갑니다.

이 기사에서는 기수 정렬을 소개하고 기수 정렬을 구현하는 방법에 대해 설명합니다. 이 기사에서는 다음과 같은 포인터를 다룰 것입니다.

그럼 시작하겠습니다.





간단히 말해서 정렬이란 주어진 요소를 체계적인 순서로 배열하는 것을 의미합니다. 정렬은 대부분의 알고리즘에서 수행됩니다. 검색을 더 쉽게 만들어 결국 알고리즘을 효율적으로 만들기 때문입니다. 이 블로그에서 우리는 일반적으로 사용되는 soring 알고리즘 중 하나, 즉 기수 정렬을 이해할 것입니다.

기수 정렬은 비 비교 정수 정렬 알고리즘입니다. 최하위 자릿수 (즉, 오른쪽에있는 자릿수)부터 최상위 자릿수 (즉, 왼쪽에있는 자릿수)까지 자릿수를 정렬하여 자릿수를 정렬합니다. 기수 정렬은 계수 정렬을 서브 루틴으로 사용하여 정렬합니다.
비교 기반 정렬 알고리즘 (예 : 힙 정렬, 빠른 정렬, 병합 정렬)의 하한은 & Omega (nLogn)이며 nLogn 이상으로 개선 할 수 없습니다. 카운팅 정렬에 대해 이야기하면 O (n + k) 시간 복잡도를 갖는 선형 시간 정렬 알고리즘이며 범위는 1에서 k 사이입니다. 이제 계수 정렬의 문제는 요소가 1에서 n2까지 범위가되었을 때 O (n2)가 걸린다는 것입니다.



Windows 7에 PHP를 설치하는 방법

따라서 선형 시간에서 1에서 n2 범위의 요소로 배열을 정렬하려면 기수 정렬이 필요합니다. 기수 정렬은 최하위 숫자부터 최상위 숫자까지 숫자별로 배열 숫자를 정렬합니다. 기수 정렬은 계수 정렬을 서브 루틴으로 사용하여 정렬합니다.

C에서 기수 정렬 프로그램에 대한이 기사를 계속 진행합니다.

기수 정렬 알고리즘

오른쪽에있는 최하위 숫자부터 시작하여 왼쪽에있는 최상위 숫자쪽으로 이동하는 모든 숫자에 대해 다음 단계를 수행합니다.



현재 숫자에 따라 계수 정렬을 사용하여 요소를 정렬합니다.
예:

원래 어레이 :
140, 65, 85, 110, 612, 54, 12, 86

최하위 숫자 즉, 한 자리에서 정렬하면

140, 110, 612, 12, 54, 65, 85, 86

참고 : 612는 12 이전에 나타나고 정렬은 한 자리에 대해서만 수행되므로이 ​​반복 후 12 이전에 612가 나타납니다.

자바 예제의 인스턴스 변수

다음 숫자, 즉 10 자리에서 정렬하면 다음이 제공됩니다.

110, 612, 12, 140, 54, 65, 85, 86

최상위 숫자 (즉, 100 자리에 있음)로 정렬하면 다음이 제공됩니다.

012, 054, 065, 085, 086, 110, 140, 612

C에서 기수 정렬 프로그램에 대한이 기사를 계속 진행합니다.

C의 기수 정렬 프로그램

기수 정렬 기능 먼저 살펴보기

문자열을 읽는 스캐너 클래스 메소드

기수 정렬 기능 :

void radixsort (int array [], int n) {// 최대 자릿수를 알기 위해 가장 큰 수를 얻습니다. int m = getMax (array, n) int dig // (dig = 1에 대한 모든 자릿수에 대해 계산 정렬이 수행됩니다. m / dig> 0 dig * = 10) countSort (array, n, dig)}

C에서 기수 정렬 프로그램에 대한이 기사를 계속 진행합니다.

카운트 정렬 기능 :

void countSort (int array [], int n, int dig) {int output [n] int i, count [10] = {0} // (i = 0 i에 대한 count []에 발생 횟수 저장= 0 i--) {output [count [(array [i] / dig) % 10]-1] = array [i] count [(array [i] / dig) % 10]-} // 복사 arr []에 대한 출력 배열, 이제 arr []에 // 현재 숫자에 따라 정렬 된 숫자가 포함됩니다 (i = 0 i

계속해서 기수 정렬을 구현하는 C 프로그램을 작성해 보겠습니다.

예:

#include // 가장 큰 수를 찾는 함수 int getMax (int array [], int n) {int max = array [0] int i for (i = 1 i max) max = array [i] return max} // Count를위한 함수 sort void countSort (int array [], int n, int dig) {int output [n] int i, count [10] = {0} // (i = 0에 대한 count []에 발생 횟수 저장 나는= 0 i--) {output [count [(array [i] / dig) % 10]-1] = array [i] count [(array [i] / dig) % 10]-} // 복사 arr []에 배열을 출력하므로 arr []은 // 현재 숫자에 따라 정렬 된 숫자를 포함합니다. for (i = 0 i 0 dig * = 10) countSort (array, n, dig)} // 배열을 인쇄하는 함수 void print (int arr [], int n) {int i for (i = 0 i

산출

C- Edureka의 출력 기수 정렬 프로그램

이제 위의 프로그램을 실행 한 후에는 C의 기수 정렬 프로그램을 이해했을 것입니다. 따라서이 기사의‘Quicksort in Java’에 대한 기사를 마쳤습니다. 자세한 내용은 다음을 확인하십시오. , 신뢰할 수있는 온라인 학습 회사입니다. Edureka의 Java J2EE 및 SOA 교육 및 인증 과정은 Hibernate & Spring과 같은 다양한 Java 프레임 워크와 함께 핵심 및 고급 Java 개념 모두에 대해 교육하도록 설계되었습니다.

질문이 있으십니까? 이 블로그의 댓글 섹션에 언급 해 주시면 가능한 한 빨리 답변을 드리겠습니다.