#include<iostream.h>
int main()
{
int a[10]={1,2,3,5,2,3,1,5,3,1};
int i;
int c[10]={0};
for(i = 0 ; i < 10 ; i++)
c[a[i]]++;
for(i=0;i<10;i++)
cout<<i<<": "<<c[i]<<endl;
return 0;
}
알고리즘의 실행 시간은 O (n)이지만 O (n)의 추가 공간을 차지합니다. 더 잘할 수 있을까요?범위가 주어지면 배열의 숫자 빈도를 계산해야합니다. 주어진 솔루션이 효율적입니까?
감사합니다.
예, 당신은 O (1) 범위로 당신을 데려 갈 것입니다 "스파게티 정렬"스타일의 접근 방식을 생각할 수 있습니다. –
@ 리카르도 : 좋았어, 이것에 대해 몰랐어. 이론적으로는이 방법이 효과적이지만 CPU 코어 나 양자 컴퓨터가 필요합니다. – schnaader
@ 리카르도 (Rikardo) : Turing 스타일 결정 성 계산 모델을 기반으로하지 않는 솔루션은 실제 프로그래밍에 아직 도움이되지 않습니다. 나는 당신이 "할 수있다"라는 단어의 정의를 갈아 치우고 있다고 생각합니다 :-) –