• 【转载合集】排序算法工具箱


    // 二分查找改进的插入排序
    void insertionSortBSearch(int a[], n) {
    for (int i = 1; i < n; ++i) {
    int j, val = a[i];
    int begin = 0, end = i - 1;
    while (begin < end) {
    int mid = begin + (end - begin) / 2;
    if (a[mid] > val) {
    end = mid - 1;
    }
    else {
    begin = mid;
    }
    }
    for (j = i - 1; j >= begin; --j) {
    a[j + 1] = a[j];
    }
    a[begin] = val;
    }
    }

       

    来自 <https://www.jianshu.com/p/916b15eae350>

       

    class A {

    public:

    int a1, a2;

    A(int m, int n): a1(m), a2(n) {}

    };

       

    class B {

    public:

    int b1, b2;

    B(int m, int n): b1(m), b2(n) {}

    };

       

    bool cmp1(A const *a, A const *b) {

    return a->a1 < b->a1;

    }

       

    bool cmp2(B const &a, B const &b) {

    return a.b1 < b.b1;

    }

       

    int main() {

    vector<A*> array;

    sort(array.begin(), array.end(), cmp1);

    sort(array2.begin(), array2.end(), cmp2);

    return 0;

    }

    /* Input matrix
    m = [
    1 4 2
    0 8 3
    3 5 1
    ]
    */

    // Ascending order by first column
    sort(m.begin(), m.end());
    /*
    m = [
    0 8 3
    1 4 2
    3 5 1
    ]
    */

    // Descending order by first column
    sort(m.rbegin(), m.rend());
    /*
    m = [
    3 5 1
    1 4 2
    0 8 3
    ]
    */

    // Ascending order by second column
    sort(m.begin(), m.end(), [](const vector<int> &a, const vector<int> &b) { return a[1] < b[1]; } );

    bool cmp(const vector<int> &a, const vector<int> &b) {
    return
    a[0] > b[0];
    }
    sort(m.begin(), m.end(), cmp);
    /*
    m = [
    1 4 2
    3 5 1
    0 8 3
    ]
    */

    // Descending order by second column
    sort(m.begin(), m.end(), [](const vector<int> &a, const vector<int> &b) { return a[1] > b[1]; } );

    bool cmp(const vector<int> &a, const vector<int> &b) {
    return
    a[0] < b[0];
    }
    sort(m.begin(), m.end(), cmp);
    /*
    m = [
    0 8 3
    3 5 1
    1 4 2
    ]
    */

       

    来自 <https://www.cnblogs.com/grandyang/p/4843528.html>

  • 相关阅读:
    第一次上机作业
    第一次作业
    信号
    进程基础
    计算机网络(第七版)谢希仁编著 第四章课后答案详解
    shell脚本编程
    关于linux安装软件(Ubuntu)时遇见的常见问题处理
    Linux系统C语言开发环境学习
    LINUX下安装中文输入法
    处理《无法获得锁 /var/lib/dpkg/lock
  • 原文地址:https://www.cnblogs.com/xukaiae86/p/12047342.html
Copyright © 2020-2023  润新知