zoukankan      html  css  js  c++  java
  • 排序算法

    #ifndef SORT_H__
    #define SORT_H__
    #include <vector>
    namespace Niuzb
    {
    namespace Algorithm
    {
    template<typename T>
    void Swap(T& lhs,T& rhs)
    {
    T tmp(lhs);
    lhs = rhs;
    rhs = tmp;
    }
    template<typename T>
    void BubbleSort(std::vector<T>& vec)
    {
    for(int i=0;i<vec.size();++i)
    {
    for(int j=0;j<vec.size()-i-1;++j)
    {
    if(vec[j] > vec[j+1])
    {
    Swap(vec[j],vec[j+1]);
    }
    }
    }
    }
    template<typename T>
    void InsertSort(std::vector<T>& vec)
    {
    for(int i =1;i<vec.size();++i)
    {
    int curIndex = i;
    T target(vec[i]);
    while(curIndex >0 && target<vec[curIndex-1])
    {
    vec[curIndex] = vec[curIndex -1];
    --curIndex;
    }
    vec[curIndex] = target;
    }
    }
    template <typename T>
    void SelectSort(std::vector<T>& vec)
    {
    for(int i =0;i<vec.size();++i)
    {
    int minIndex = i;
    for(int j =i+1;j<vec.size();++j)
    {
    if(vec[minIndex]>vec[j])
    {
    minIndex = j;
    }
    }
    if(minIndex != i)
    {
    Swap(vec[minIndex],vec[i]);
    }
    }
    }
    template <typename T>
    void QuickSort(std::vector<T>& vec,int left,int right)
    {
    int i = left;
    int j = right-1;
    if(i >= j)
    {
    return;
    }
    // 挖坑填数
    T target(vec[i]);
    while(i<j)
    {
    while(i<j && vec[j]>target)
    {
    --j;
    }
    if(i<j)
    {
    vec[i++] = vec[j];
    }
    while(i<j && vec[i]<target)
    {
    ++i;
    }
    if(i<j)
    {
    vec[j--]=vec[i];
    }
    }
    vec[i] = target;
    QuickSort(vec,left,i);
    QuickSort(vec,i+1,right);
    }
    template <typename T>
    void QuickSort(std::vector<T>& vec)
    {
    QuickSort(vec,0,vec.size());
    }
    }
    }
    #endif
  • 相关阅读:
    [Luogu5042/UOJ #100][国家集训队互测2015]丢失的题面/ydc的题面
    [51nod1773]A国的贸易
    [GZOI2019&GXOI2019]省选GG记
    [51nod1659]数方块
    [51nod1052]最大M子段和
    [51nod1201]整数划分
    [51nod1084]矩阵取数问题 V2
    [51nod1020]逆序排列
    [BZOJ3000]Big Number
    [BZOJ1684][Usaco2005 Oct]Close Encounter
  • 原文地址:https://www.cnblogs.com/nzbbody/p/4321383.html
Copyright © 2011-2022 走看看