zoukankan      html  css  js  c++  java
  • 算法导论7.14习题解答(快速排序)

    CLRS 7.1-4 :

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

    算法思想:

    改掉书上partition算法中的<=为>=

    #include <iostream>
    using namespace std;
    void quick_sort(int*&a, int p, int r);
    int partition(int*&a, int p, int r);
    int main()
    {
    const int LEN =20;
    int b[LEN] = {12, 43, 0, -4, 98, 75, 64, 88, 5, 32, 11, 12, 13, 84, 34, 27, -5, -244, 49, 345};
    int* a =new int[LEN];
    for(int i =0; i < LEN; i++)
    a[i]
    = b[i];
    quick_sort(a,
    0, LEN -1);
    for(int i =0; i < LEN; i++)
    cout
    <<a[i]<<endl;
    return0;
    }
    void quick_sort(int*&a, int p, int r)
    {
    if(p < r)
    {
    int q = partition(a, p, r);
    quick_sort(a, p, q
    -1);
    quick_sort(a, q
    +1, r);
    }
    }
    int partition(int*&a, int p, int r)
    {
    int j = p;
    for(int i = p; i < r; i++)
    {
    if(a[i] >= a[r])
    {
    if(i != j)
    {
    int temp = a[i];
    a[i]
    = a[j];
    a[j]
    = temp;
    }
    j
    ++;
    }
    }
    int ex = a[j];
    a[j]
    = a[r];
    a[r]
    = ex;

    return j;
    }

    PS:第七章其他题目都为算法证明题,学的不深,都下不了手。

    ---
    可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明
  • 相关阅读:
    函数之返回值
    函数之初识函数
    三元运算符
    枚举enumerate
    模块
    迭代器
    斐波那契
    leetcode155 最小栈
    leetcode94 二叉树的中序遍历
    leetcode20 有效的括号
  • 原文地址:https://www.cnblogs.com/null00/p/2065074.html
Copyright © 2011-2022 走看看