>  기사  >  Java  >  자바의 정렬 정렬

자바의 정렬 정렬

WBOY
WBOY원래의
2024-08-30 15:58:331046검색

카운팅 정렬은 Java와 마찬가지로 모든 프로그래밍 언어에서 중추적인 역할을 하는 알고리즘입니다. 계산 정렬 알고리즘의 주요 목적은 알고리즘 정렬을 위해 작은 정수로 존재하는 키에 따라 객체 컬렉션을 정렬하는 것입니다. 주로 키-값 쌍에 대한 계산을 수행하고 출력 순서에 따라 요소의 위치를 ​​표시합니다.  이 정렬의 실행 시간은 항목 기준으로 선형이며 키 값의 차이는 최대값과 최소값 사이에 있습니다.

무료 소프트웨어 개발 과정 시작

웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등

구문

Java에서 Counting Sort를 수행하는 특별한 구문은 없지만 입력에 따라 Counting Sort를 수행하기 위해 단계별 알고리즘 형태로 적용되는 논리 흐름이 있으며 다음과 같이 표현됩니다.

Class name {
Method name following sorting ()
{
# Find the length of array defined;
#the output character array will have sorted array
#Create a count arr to store count of each element, characters and initialize it 0
#Store count of each character element in the array
#Build output character and write the logic to make it operated in reverse order
#that builds output can now be copied from the previous array to the current
#Make use of the driver code to move and proceed.
}

Java에서 계산 정렬은 어떻게 작동하나요?

  • 언급한 것처럼 Counting Sort 알고리즘은 프로그래밍에서 중요한 역할을 합니다. 이는 수집된 형식으로 존재하는 객체를 정렬하는 데 사용되며 고유한 키와 값 쌍이 있는 존재하는 요소의 수를 계산하는 데 사용되며 다시 각 키-값이 있는 각 요소의 위치를 ​​결정하는 산술 계산과 함께 사용됩니다. 최소값과 최대값의 차이
  • 선택한 경우 실행 시간 또는 시간 복잡도는 배열의 모든 요소와 최소 및 최대 키 값의 차이를 갖는 본질적으로 선형이므로 이러한 요소 및 정렬 기술은 키의 변형이 직접 사용되는 경우에 적합합니다. 필수 키가 있는 요소보다 크게 크지 않습니다.
  • 대부분의 키 처리를 지원할 수 있는 다른 알고리즘이 있지만 요구 사항에 따른 계산 정렬 및 해싱만큼 효율적이지 않으므로 이전에 비해 많은 양의 키 상황을 처리하려면 Radix 정렬로 대체할 수 있습니다. .
  • 카운팅 정렬은 배열에 대한 인덱스 값의 일부로 키와 값 쌍을 사용하므로 비교 정렬로 간주되지 않습니다. 또한, 비교정렬의 하한값은 허용되지 않습니다.
  • 버킷 정렬에는 동일한 작업 세트 및 유사한 시간 분석만으로 과소 계산 정렬이 제공되지만 당시 계산 정렬과 비교할 때 버킷 정렬에는 동적 배열, 연결 목록 또는 많은 양의 메모리가 필요합니다. 버킷에 존재하는 요소를 계산하고 정렬하면 버킷별로 개별 및 단일 숫자인 값만 저장됩니다.
  • 카운팅 정렬에 대한 입력이 n개의 항목 모음으로 구성되어 있으며 각 항목에는 k 값을 갖는 최대 값에 대해 음이 아닌 정수 키 값이 있다는 사실에 근거한 특정 입력 및 출력 가상 시퀀스가 ​​있습니다. 계산 정렬에 대한 일부 설명은 단순히 선형 형식의 정수 시퀀스를 정렬하기 위한 입력입니다.
  • 배열의 출력은 대부분 키 순서에 따라 주요 항목으로 구성되지 않으나, 요구사항에 맞게 사용 여부를 확인해야 합니다.
  • Sort 계산에 대한 시간복잡도는 O(n+l)로 나옵니다. 여기서 n은 요소의 개수이고 l은 입력을 고려하는 범위입니다.
  • 그리고 보조공간도 O(n+l)로만 나옵니다.

Java의 Counting Sort 예시

이 프로그램은 Java 정렬의 일부로 설정된 입력 및 출력 순서 중 일부를 고려하여 계산 정렬을 보여줍니다.

코드:

public class Counting_Sort_1{
void sort_0(char arr_0[])
{
int n_8 = arr_0.length;
char output_val[] = new char[n_8];
int count_0[] = new int[528];
for (int l_0 = 0; l_0 < 528; ++l_0)
count_0[l_0] = 0;
for (int y_1 = 0; y_1 < n_8; ++y_1)
++count_0[arr_0[y_1]];
for (int l_0 = 1; l_0 <= 526; ++l_0)
count_0[l_0] += count_0[l_0 - 1];
for (int l_0 = n_8 - 1; l_0 >= 0; l_0--) {
output_val[count_0[arr_0[l_0]] - 1] = arr_0[l_0];
--count_0[arr_0[l_0]];
}
for (int l_0 = 0; l_0 < n_8; ++l_0)
arr_0[l_0] = output_val[l_0];
}
public static void main(String []args){
Counting_Sort_1 ob = new Counting_Sort_1();
char arr_0[] = { 's', 'a', 'r', 'c', 's', 'f', 'o',
'i', 'n', 'c', 'a', 'r', 'm' };
ob.sort_0(arr_0);
System.out.print("Sorted_character_array_in_Counting_Sort ");
for (int l = 0; l < arr_0.length; ++l)
System.out.print(arr_0[l]);
}
}

출력:

자바의 정렬 정렬

설명

위의 예에서는 올바른 실행을 위해 다음 단계를 따라 Java에서 계산 정렬을 구현했습니다.

  • Selection_Sort_0이 포함된 클래스가 클래스에 대한 입력 집합을 따라 생성됩니다.
  • 클래스가 만들어지면 정렬된 배열을 가질 문자 배열을 저장하는 메서드가 생성됩니다.
  • 값을 키와 값 쌍의 형태로 독립된 개체로 저장한다는 의미로 카운트 배열을 생성하면 더 나아가 카운트로서 char 형태로 저장됩니다.
  • 출력 배열에서 현재 문자의 실제 값과 위치를 계산하려면 카운트 변경이 필요합니다.
  • 문자 집합으로 출력 배열을 만들어 안정적이고 역순으로 작동 가능하게 만듭니다.
  • 정렬된 배열을 현재 배열에 복사하여 배열을 어떤 방식으로든 정렬합니다.
  • 드라이버 코드는 입력 소스에서 출력을 얻기 위해 전체 코드 베이스를 더욱 구동하기 위해 실행됩니다.

결론

카운팅 정렬은 정렬을 위한 요소의 범위로 구성된 배열에 적용되는 정렬 알고리즘의 한 유형입니다. 정렬은 배열 내에 존재할 키와 값 쌍을 기반으로 하거나 최소값이나 최대값의 차이를 기준으로 수행됩니다. 계산 정렬은 정수를 대량으로 사용하여 구현해야 하는 경우 개발자에게 많은 도움을 제공했습니다.

위 내용은 자바의 정렬 정렬의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.