zoukankan      html  css  js  c++  java
  • 《算法导论》笔记 第8章 8.4桶排序

    【笔记】


    桶排序假设元素均匀而独立的分布在区间[0,1)上。

    桶排序的思想就是把区间[0,1)划分成n个相同大小的子区间,或称桶。将n个输入数分布到各个桶中去。

    整个桶排序算法以线性期望时间排序。

    void bucketSort(double A[],int n) {
        list<double> B[MAXN];
        for (int i=1;i<=n;i++) {
            B[(int)floor(n*A[i])].push_back(A[i]);
        }
        for (int i=0;i<=n-1;i++) {
            B[i].sort();
        }
        int cnt = 0;
        for (int i=0;i<=n-1;i++) {
            for (list<double>::iterator it=B[i].begin();it!=B[i].end();it++) A[++cnt] = *it;
        }
    }

    【练习】


    8.4-1 说明BUCKET-SORT作用于数组 A = <0.79,0.13,0.16,0.64,0.39,0.20,0.89,0.53,0.71,0.42>。

    i = 0
    i = 1 0.13 0.16
    i = 2 0.2
    i = 3 0.39
    i = 4 0.42
    i = 5 0.53
    i = 6 0.64
    i = 7 0.71 0.79
    i = 8 0.89
    i = 9


    8.4-2 桶排序的最坏运行时间是什么?如果要在保持其线性运行时间的同时,使最坏情况时间为O(nlgn),要对算法做什么样的修改?

    在所有元素都在一个桶中时有最坏运行时间O(n^2)。

    要使最坏情况时间为O(nlgn),应采用O(nlogn)的排序算法对桶内的元素进行排序。


    8.4-3 设X是一个随机变量,用于表示在将一枚硬币抛掷两次时,正面朝上的次数。E[X^2]是多少?E^2[X]是多少?


    *8.4-4 单位圆中有n个点pi=(xi,yi),使得0<xi^2+yi^2<=1,i=1,2,...,n。假设所有点是均匀分布的。设计一个Θ (n)期望的算法,来根据点到原点之间的距离di=sqrt(xi^2+yi^2)对n个点排序。


    *8.4-5 一个随机变量X的概率分布函数P(x)定义为P(x)=Pr{X<=x}。假设n个随机变量X1,X2,...,Xn。符合一个连续概率分布函数P,它可以在O(1)时间内计算。说明如何在线性期望时间内排序这n个数。




  • 相关阅读:
    使用keras构建简单的网络分类鸢尾花
    矩阵的秩 rank(A)
    矩阵的迹
    数学符号大全速查表
    迷茫的不是青春,是你们回望青春时失焦的眼神。
    服务器Windows Server 2008 远程控制安全设置技巧
    服务器安全维护配置和优化八大要点
    怎么把html页面中共用的底部代码做成共享模块
    回首2017,展望2018,今后的路我们一起走
    手机端rem如何适配_rem详解及使用方法2
  • 原文地址:https://www.cnblogs.com/cyendra/p/3681619.html
Copyright © 2011-2022 走看看