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

2022-02-23  本文已影响0人  hahamama

把写内容过程中经常用的内容记录起来,如下内容是关于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);

    }

}

上一篇下一篇

猜你喜欢

热点阅读