美文网首页个人专题
常见排序算法的C++实现

常见排序算法的C++实现

作者: dalalaa | 来源:发表于2018-03-31 09:34 被阅读3次

选择排序

#include <iostream>
using namespace std;

template <typename T>
void select_sort(T lst[],int len)
{
    int i,j;
    for(i=0;i<=len-1;i++)
    {
        int min_index = i;
        for(j=i;j<=len-1;j++)
        {
            if(lst[j]<lst[min_index])
            {
                min_index = j;
            }
        }
        swap(lst[i],lst[min_index]);
    }
}

template <typename T>
void swap(T x, T y)
{
    T temp;
    temp = x;
    x = y;
    y = temp;
}


int main()
{
    float lst[] = {11,7,6,54,4,3,32,22,1,2,3,4,5,6,7};
    int len = (int) sizeof(lst)/sizeof(*lst);
    select_sort(lst,len);
    for (int i=0;i<len;i++)
    {
        cout << lst[i] << " ";
    }
    cout << endl;
    return 0;
}

冒泡排序

#include <iostream>
using namespace std;
template <typename T>

void bubble_sort(T lst[],int len)
{
    int i,j;
    T temp;
    for (i=0;i<len-1;i++)
    {
        for (j=0;j<len-1;j++)
        {
            if (lst[j]>lst[j+1])
            {
                swap(lst[j],lst[j+1]);
            }
        }
    }
}

template <typename T>//在每个使用到T类型的函数前都需要加template 
void swap(T x,T y)
{
    T temp;
    temp = x;
    x = y;
    y = temp;
}

int main()
{
    float lst[] = {11,7,6,54,4,3,32,22,1,2,3,4,5,6,7};
    int len = (int) sizeof(lst)/sizeof(*lst);
    bubble_sort(lst,len);
    for (int i=0;i<len;i++)
    {
        cout << lst[i] << " ";
    }
    cout << endl;
    return 0;
}

插入排序

#include <iostream>
using namespace std;

template <typename T>
void insert_sort(T lst[],int len)
{
    int i,j;
    T temp;
    for(i=0;i<=len-1;i++)
    {
        temp = lst[i];
        j = i - 1;
        while(j>=0&&lst[j]>temp)
        {
            lst[j+1] = lst[j];
            j--;
        }
        lst[j+1] = temp;
    }
} 

int main()
{
    float lst[] = {11,7,6,54,4,3,32,22,1,2,3,4,5,6,7};
    int len = (int) sizeof(lst)/sizeof(*lst);
    insert_sort(lst,len);
    for (int i=0;i<len;i++)
    {
        cout << lst[i] << " ";
    }
    cout << endl;
    return 0;
}

快速排序

#include <iostream>
using namespace std;

template <typename T>
int partition(T lst[],int low,int high)
{
    T pivot = lst[high-1];
    int small = low - 1;
    int i;
    for(i=low;i<high;i++)
    {
        if(lst[i]<pivot)
        {
            small ++;//记录最后一个小于pivot的元素的index 
            swap(lst[i],lst[small]);
        }
    }
    if(lst[small+1] > pivot)
    {
        swap(lst[small+1],lst[high-1]);
    }
    return small + 1;
}

template <typename T>
void quick_sort(T lst[],int low,int high)
{
    if(low < high)
    {
        int p = partition(lst,low,high);
        quick_sort(lst,low,p);
        quick_sort(lst,p+1,high);
    }
}

template <typename T>
void swap(T x,T y)
{
    T temp;
    temp = x;
    x = y;
    y = temp;
}

int main()
{
    float lst[] = {11,7,6,54,4,3,32,22,1,2,3,4,5,6,7};
    int len = (int) sizeof(lst)/sizeof(*lst);
    quick_sort(lst,0,len);
    for (int i=0;i<len;i++)
    {
        cout << lst[i] << " ";
    }
    cout << endl;
    return 0;
}

有兴趣转行机器学习的朋友可以加群:


机器学习-菜鸡互啄群

相关文章

  • 排序算法详细代码实现

    算法分类 算法时间复杂度 选择排序 插入排序 C++实现 Python实现 冒泡排序 Python实现 归并排序 ...

  • 七大排序算法之快速排序

    七大排序算法之快速排序 @(算法笔记)[排序算法, 快速排序, C++实现] [TOC] 快速排序的介绍: 快速排...

  • 七大排序算法之冒泡排序

    七大排序算法之冒泡排序 @(算法笔记)[排序算法, 冒泡排序, C++实现] 冒泡排序介绍 冒泡排序是七大排序算法...

  • 常见排序算法的C++实现

    选择排序 冒泡排序 插入排序 快速排序 有兴趣转行机器学习的朋友可以加群:

  • 排序算法

    常见排序算法比较 参考资料:各种排序算法比较 参考资料:快速排序算法 必须知道的八大种排序算法【java实现】(一...

  • 关于不同排序算法的性能比较

    一个排序算法性能测试的c++实现,用于测试不同排序算法的耗时,代码如下: 比较直接排序与选择排序示例: 测试结果:

  • 插入排序算法实现

    排序算法是最常见,最基础的算法,作者文集中记录了两种排序算法(插入排序,归并排序) 插入排序算法实现很简单直接,附...

  • 编程算法之排序和查找算法

    查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中。因为其实现代码较短,应用较常见。 一. 排序 常见...

  • 排序与搜索

    排序算法: 一种能将一串数据依照特定顺序进行排列的一种算法 常见排序算法效率的比较 排序算法的实现 1. 冒泡排序...

  • 7大经典的排序算法总结实现

    作者 : 专注J2EE来源 : 博客园 常见排序算法总结与实现 本文使用Java实现这几种排序。以下是对排序算法总...

网友评论

    本文标题:常见排序算法的C++实现

    本文链接:https://www.haomeiwen.com/subject/glfgcftx.html