counting sort - kurkim0661/jihwan GitHub Wiki

μΉ΄μš΄νŒ… μ •λ ¬μ˜ μ‹œκ°„ λ³΅μž‘λ„λŠ” O(n) 타 정렬보닀 λΉ λ₯΄μ§€λ§Œ 단점이 μžˆλ‹€... μΉ΄μš΄νŒ… 배열을 λ§Œλ“€μ–΄μ•Όν•˜λŠ”λ° 이에 λ”°λΌμ„œ λ©”λͺ¨λ¦¬ μš©λŸ‰μ΄ κ²½μš°μ— λ”°λΌμ„œ ꡉμž₯히 μ»€μ§€λŠ” 상황이 λ²Œμ–΄μ§ˆ 수 μžˆλ‹€. 상황에 λ”°λΌμ„œ ν•΄μ•Όν• λ“―... μΉ΄μš΄νŒ… μ†ŒνŠΈκ°€ μ•ˆλœλ‹€λ©΄ ν€΅μ†ŒνŠΈκ°€ 쒋은 λŒ€μ•ˆμ΄ 될 것!

void countSort(vector & arr)

{

int max = *max_element(arr.begin(), arr.end()); 
int min = *min_element(arr.begin(), arr.end()); 
int range = max - min + 1; 
  
vector<int> count(range), output(arr.size()); 
for(int i = 0; i < arr.size(); i++) 
    count[arr[i]-min]++; 
      
for(int i = 1; i < count.size(); i++) 
       count[i] += count[i-1]; 

for(int i = arr.size()-1; i >= 0; i--) 
{  
     output[ count[arr[i]-min] -1 ] = arr[i];  
          count[arr[i]-min]--;  
} 
  
for(int i=0; i < arr.size(); i++) 
        arr[i] = output[i]; 

}

void printArray(vector & arr)

{

for (int i=0; i < arr.size(); i++)  
    cout << arr[i] << " ";  
cout << "\n";  

}

int main()

{

vector<int> arr = {-5, -10, 0, -3, 8, 5, -1, 10}; 
countSort (arr); 
printArray (arr); 
return 0; 

}

⚠️ **GitHub.com Fallback** ⚠️