模板实现冒泡(不同类型的元素)排序

来源:互联网 发布:2000数据库置疑修复 编辑:程序博客网 时间:2024/05/29 11:13

真是学着忘着,学着忘着…
学的东西已经快要忘光了,说到底,还是自己没有深刻的理解并掌握。
提醒自己:再简单的知识你不会就是不会,永远不要对学过的小知识或者简单的知识不屑一顾,可能下次你跳进的坑就是这些小的知识点为你而挖的。

#pragma once#define _CRT_SECURE_NO_WARNINGS 1#include<iostream>using namespace std;template<typename T>class Greate{public :    bool operator()(const T& left, const T& right)//仿函数    {        return left > right;    }};template<typename T>class Less{public :     bool operator()(const T& left, const T& right)//仿函数    {        return left < right;    }};template<typename T, class Compare>void BubbleSort(T* array, size_t sz){    for (size_t i = 0; i < sz - 1; i++)    {        bool isChange = true;//在每次从头开始排序时都需要初始化标志位        for (size_t j = 0; j < sz - i - 1; j++)        {            if (Compare()(array[j], array[j + 1]))//调用仿函数、类似于无名对象            {                isChange = false;                T tmp = array[j];                array[j] = array[j + 1];                array[j + 1] = tmp;            }        }        if (isChange)//在排序过程中,如果发现有一趟没有进行交换,那么说明已经有序了        {            break;        }    }}template<typename T>void Show(T* array, size_t sz){    for (size_t index = 0; index < sz; index++)    {        cout << array[index]<<"  ";    }    cout << endl;}void Test1(){    double array[] = { 0.1, 3.3, 9.1, 2.2, 4.7, 6.0 };    int array1[] = { 1, 3, 9, 2, 4, 6 };    BubbleSort<int, Greate<int> >(array1, sizeof (array1) / sizeof(array1[0]));    Show(array1, sizeof (array1) / sizeof(array1[0]));    BubbleSort<double, Less<double> >(array, sizeof (array) / sizeof(array[0]));    Show(array, sizeof (array) / sizeof(array[0]));}int main(){    Test1();    return 0;}
0 0
原创粉丝点击