• <排序算法> 计数排序CountSort


    代码实现:

     1 #include<iostream>
     2 using namespace std;
     3 
     4 void PrintArr(int arr[],int len);
     5 void CountSort(int arr[],int len)
     6 {
     7     if(arr == NULL || len <= 0)    return ;
     8     
     9     int min = arr[0];
    10     int max = arr[0];
    11     int i;
    12     for(i=0;i<len;i++)
    13     {
    14         if(arr[i] < min)
    15             min = arr[i];
    16         if(arr[i] > max)
    17             max = arr[i];
    18     }
    19 
    20     int* arrcount = (int*)malloc(sizeof(int)*(max-min+1));
    21     memset(arrcount,0,sizeof(int)*(max-min+1));
    22     for(i=0;i<len;i++)
    23     {
    24         arrcount[arr[i]-min] ++;
    25     }
    26 
    27     int j=0;
    28     for(i=0;i<max-min+1;i++)
    29     {
    30         if(arrcount[i] != 0)
    31             while(arrcount[i]--)
    32                 arr[j++] = i + min;
    33     }
    34 
    35     return ;
    36 }
    37 
    38 void PrintArr(int arr[],int len)
    39 {
    40     for(int i=0;i<len;i++)
    41         cout << arr[i] << " ";
    42     cout << endl;
    43 
    44     return ;
    45 }
    46 
    47 int main()
    48 {
    49     //int arr[10] = {9,8,7,6,5,4,3,2,1,0};
    50     //int arr[10] = {4,8,6,3,7,2,9,5,0,1};
    51     int arr[10] = {4,4,2,3,3,8,8,8,5,5};
    52     CountSort(arr,sizeof(arr)/sizeof(arr[0]));
    53     PrintArr(arr,sizeof(arr)/sizeof(arr[0]));
    54 
    55     system("pause");
    56     return 0;
    57 }
  • 相关阅读:
    Android随笔
    Android随笔
    Android随笔
    Android随笔
    Android随笔
    Android随笔
    Android随笔
    Android随笔
    Android随笔
    Codeforces Round #551题解
  • 原文地址:https://www.cnblogs.com/Aaaaaalei0612/p/11218786.html
Copyright © 2020-2023  润新知