C++排序算法

排序算法总结

1.冒泡排序

思想:两两比较相邻的元素,若反序,则将这俩元素交换;

代码:

template<typename T>

void BubbleSort(T a[], int n)

{

    for (int i = 0; i < n; ++i)

    {

        for (int j = 1; j < n - i; ++j)

        {

            if (a[j - 1]>a[j])

                myswap(a[j-1],a[j]);

        }

    }

}

2.直接插入排序

思想:将第一个元素看做有序序列,将第2个元素插入到前面的有序序列中,构成新的有序序列,以此类推;

代码:

template<typename T>

void InsertSort(T a[], int n)

{

    for (int i = 1; i < n; ++i)

    {

        T temp = a[i];

        int j;

        for (j = i; j >0 && a[j-1]>temp; --j)

            a[j] = a[j - 1];

        a[j] = temp;

    }

}

3.选择排序

思想:从长度为n的序列中选择最小的元素,与第一个元素交换,对于剩余的n-1的元素以此类推;

代码:

template<typename T>

void SelectSort(T a[], int n)

{

    for (int i = 0; i < n - 1; ++i)

    {

        T min_index = i;

        for (int j = i + 1; j < n; ++j)

        {

            if (a[min_index]>a[j])

                min_index = j;

        }

        myswap(a[i],a[min_index]);

    }

}

4.希尔排序

思想:

 

你可能感兴趣的:(排序算法)