zoukankan      html  css  js  c++  java
  • 《算法导论》笔记 第7章 7.1快速排序的描述

    【笔记】

    快速排序的最坏运行时间为O(n^2),期望运行时间为O(nlogn)。

    int partition(int A[],int p,int r) {
        int x = A[r];
        int i = p-1;
        for (int j=p;j<r;j++) {
            if (A[j] <= x) {
                i++;
                swap(A[i],A[j]);
            }
        }
        swap(A[i+1],A[r]);
        return i+1;
    }
    
    void quickSort(int A[], int p,int r) {
        if (p < r) {
            int q = partition(A,p,r);
            quickSort(A,p,q-1);
            quickSort(A,q+1,r);
        }
    }
    

    【习题】

    7.1-1 说明PARTITION过程作用于输入数组 A = <13,19,9,5,12,8,7,4,21,2,6,11> 上的过程。



    7.1-2 当数组 A[p..r] 中的元素均相同时,PARTITION 返回的q值是什么?修改 PARTITION,使得当数组 A[p..r] 中所有的元素值相同时,q = (p+r)/2。

    是r。

    if (i+1==r) return (p+r)/2;


    7.1-3 简要地证明在大小为n的子数组上,PARTITION的运行时间为⊙(n)。

    前n-1个元素均与r进行了一次比较,因此运行时间为⊙(1) * n = ⊙(n)


    7.1-4 应如何修改QUICKSORT,才能使其按非增序进行排序?

    在 PARTITION 中比p大的元素移到左边,比p小的在右边。


  • 相关阅读:
    MySQL的图形化安装
    java笔记整理
    运动会报名系统的简易实现
    JDBC知识点总结
    MySQL常用知识总结
    python的传参数用法
    R统计数据框的行数
    SAINT学习笔记
    win10 双网卡设置内网和外网同时访问
    根据GSVA结果绘制不同组的趋势图
  • 原文地址:https://www.cnblogs.com/cyendra/p/3681627.html
Copyright © 2011-2022 走看看