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

    基数排序基本思想:计数排序是一个类似于桶排序的排序算法,其优势是对已知数量范围的数组进行排序。它创建一个长度为这个数据范围的数组C,C中每个元素记录要排序数组中对应记录的出现个数。

    对于上述例子,认为人的身高在100cm--300cm之间,然后建立200个桶(pail),桶中存的是对应元素的个数,即pail[185]=2。当所有的元素都放进桶中后,在按照顺序将桶中元素倒出。

    #include <iostream>
    #include <algorithm>
    #include "string.h"
    #include "stdio.h"
    #include <vector>
    #include <deque>
    #include<stack>
    using namespace std;
    
    class Sort {
    public:
        int* countingSort(int* A, int n) {
            int* pail = new int[1000];//定义1000个桶
            int* result = new int[n];
            int j=0;
            for(int i=0;i<1000;i++)//初始化桶
            {
                pail[i]=0;
            }
            for(int i=0;i<n;i++)
            {
                pail[A[i]]++;
            }
            for(int i=0;i<1000;i++)
            {
                if(pail[i]!=0)
                {
                    for(int k=pail[i];k>0;k--)
                    {
                        result[j++]=i;
                    }
                }
            }
            return result;
        }
    };
    int main()
    {
        int array[]={3,4,5,1,4,8,7};
        Sort sort;
        int len = sizeof(array)/sizeof(array[0]);
        int* arr = sort.countingSort(array,len);
        for(int i=0;i<len;i++)
        {
            cout<<arr[i]<<" ";
        }
        cout<<endl;
        return 0;
    }
  • 相关阅读:
    求最大公约数
    1013
    实现页面的3D效果
    实现购物车的加减算法
    随机验证码
    深入理解jQuery中的ajax
    canvas粒子时钟
    node、express框架
    vue的增删改查
    实现点击a标签页面跳转后颜色高亮
  • 原文地址:https://www.cnblogs.com/omelet/p/6600880.html
Copyright © 2011-2022 走看看