zoukankan      html  css  js  c++  java
  • 计数排序

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    template <class T>
    void
    countSort(T* array, int len)
    {
      T max = array[0];
      T min = array[0];
      for(int i =0 ;i<len; ++i){
        if(array[i]>=max)
          max = array[i];
        if(array[i]<min)
          min = array[i];
      }
      T* countArray = (T*)calloc(max+1, sizeof(T));
      for(int i=0; i<len; ++i){
        countArray[array[i]]++;
      }
      int arrayIndex = 0;
      for(int i=0; i<(max+1); ++i){
        for(int j=0; j< countArray[i] && countArray[i]>0; ++j){
          array[arrayIndex++]=i;
        }
      }
      free(countArray);
    }
    
    int
    main()
    {
      int array[10] = {10, 2, 3, 40, 5, 6, 7, 8, 9, 10};
      const int arraylen = sizeof(array)/sizeof(int);
      countSort(array, arraylen);
      for(int i =0; i< arraylen; ++i){
        printf("%d ", array[i]);
      }
      printf("\n");
    }
    
  • 相关阅读:
    【HDOJ】1224 Free DIY Tour
    【HDOJ】1494 跑跑卡丁车
    【HDOJ】1495 非常可乐
    ACMer
    find the nth digit
    A C
    已知六条边的边长,求四面体体积
    快速排序
    {A} + {B}
    素数回文
  • 原文地址:https://www.cnblogs.com/zjfdlut/p/2033313.html
Copyright © 2011-2022 走看看