C++快速排序算法,用到了函数指针的代码

把写内容过程中经常用的内容记录起来,如下内容是关于C++快速排序算法,用到了函数指针的内容。

#include <iostream>

#include <algorithm>

#include <string>

#include <cctype>

struct example{

    int id;

    std::string name;

};

template <class T>

template <class T>

bool intCheck(int a, int b){

    return (a < b);

}

bool stringCheck(std::string a, std::string b){

    for(int i = 0; i < a.length(); i++)

        a[i] = tolower(a[i]);

    for(int i = 0; i < b.length(); i++)

        b[i] = tolower(b[i]);

    if(strcmp(a.c_str(), b.c_str()) >= 0)

        return false;

    else return true;

}

bool exampleCheck(example a, example b){

    if(strcmp(a.name.c_str(), b.name.c_str()) >= 0) return false;

    else return true;

}

    int iArray[] = { 2, 1, 56, 213, 2, 32, 32216, 14 };

    std::string sArray[] = { "Hello", "how are you?", "elephant", "aaah!", "zzzzz", "queen" };

    example structArray[] = { {1, "Joe"},

                              {4, "Billy"},

                              {2, "Zander"},

                              {3, "Tom"} };

    quickSort(iArray, 0, 7, intCheck);

    quickSort(sArray, 0, 5, stringCheck);

    quickSort(structArray, 0, 3, exampleCheck);

    std::cout << "Integers:" << std::endl;

    for(int i = 0; i < 8;i++)

        std::cout << 't' << iArray[i] << std::endl;

    std::cout << std::endl << "String:" << std::endl;

    for(int i = 0; i < 6;i++)

        std::cout << 't' << sArray[i] << std::endl;

    std::cout << std::endl << "Structure (By name):" << std::endl;

    for(int i = 0; i < 4;i++)

        std::cout << "t{ " << structArray[i].id << ", " << structArray[i].name << " }" << std::endl;

    std::cin.get();

    return 0;

}

template <class T>

    int pos = l;

    std::swap(uA[r], uA[pos]);

    if (l < r){

        std::swap(uA[r], uA[pos]);

        }

    return pos;

}

template <class T>

    if(r > l){

        int pos = partition( uA, l, r, less );

        quickSort( uA, l, pos-1, less);

        quickSort( uA, pos+1, r, less);

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • #include using namespace std; #include int Paration(int r...
    qwrdxer阅读 109评论 0 1
  • 核心思想:递归;然后寻找枢轴,在进行交换 #include using namespace std; templa...
    朱宏飞阅读 120评论 0 2
  • /* (无序区,有序区)。从无序区通过交换找出最大元素放到有序区前端。 选择排序思路: 1. 比较相邻的元素。如果...
    刘帆_d384阅读 483评论 0 0
  • 本文将通过动态演示+代码的形式系统地总结十大经典排序算法。 时间、空间复杂度比较 排序算法平均时间复杂度最差时间复...
    逆风_c69c阅读 257评论 0 0
  • 总结一下常见的排序算法。 排序分内排序和外排序。内排序:指在排序期间数据对象全部存放在内存的排序。外排序:指在排序...
    jiangliang阅读 1,375评论 0 1