利用函数模式改写快排函数

一、请使用函数模板,写一个能够针对所有数据类型的数据的快速排序函数

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>
#include <vector>
#include <memory>

using namespace std;

template <typename T>
T first_sort(T* arr,int start,int end)
{
    T base = arr[start];
    while(start<end)
    {
        if(base<=arr[end])
        {
            end--;
        }
        arr[start] = arr[end];
     
        if(base>arr[start])
        {
            start++;
        }
        arr[end] = arr[start];
    }                                                        
    
    cout << "快排后的数组:";
    for(int i=0;i<7;i++)
    {
        cout << arr[i] << "  ";
    }
     cout << endl;
 
     arr[start] = base;
     return start;
 }
 
 template <typename T>
 void sort(T* arr,int start,int end)
 {
     if(start >= end) { return ;}
     T ret = first_sort(arr,start,end);
     sort(arr,start,ret-1);
     sort(arr,ret+1,end);
 }
                                                        
 int main(int argc,const char** argv){
     int arr[7] = {66,22,33,44,55,77,11};
     sort(arr,0,sizeof(arr)/sizeof(arr[0]-1));
     cout << "完成所有快排后的数组:";
     for(int i=0;i<7;i++)
     {
         cout << arr[i] << "  ";
     }
     cout << endl;
 return 0;
 }

 运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值