分享

冒泡排序、选择排序、插入排序 算法实现(C++)

 看风景D人 2014-06-07

这三种排序方法都是O(N2)的,概念和实现如下。

 

冒泡排序:通过N-1次对剩余未排序元素中最大(小)元素的上浮来实现排序,上浮过程通过交换相邻元素实现。

 

template<typename ElementType>
void BubbleSort(ElementType A[], int N)
{
    ElementType Temp;
    for (int i=0; i<N-1; i++)
    {
        for (int j=0; j<N-1-i; j++)
        {
            if (A[j+1]<A[j])
            {
                Temp = A[j];
                A[j] = A[j+1];
                A[j+1] = Temp;
            }
        }
    }
}

 

选择排序:通过N-1次将剩余未排序元素中最大(小)元素放置到数组尾部来实现排序。

 

template<typename ElementType>
void SelectionSort(ElementType A[], int N)
{
    int currentMax;
    ElementType Temp;
    for (int i=0; i<N-1; i++)
    {
        currentMax = 0;
        for (int j=0; j<N-i; j++)
        {
            if (A[currentMax]<A[j])
            {
                currentMax = j;
            }
        }
        Temp = A[N-1-i];
        A[N-1-i] = A[currentMax];
        A[currentMax] = Temp;
    }
}

 

插入排序:通过N-1趟排序组成。第i趟排序后保证位置0到位置i上的元素为已排序状态。第i趟排序将第i个元素插入到前i-1个有序元素中。

 

template<typename ElementType>
void InsertionSort(ElementType A[], int N)
{
    ElementType Temp;
    for (int i=1; i<N; i++)
    {
        int j;
        Temp = A[i];
        for (j=i; j>0&&Temp<A[j-1]; j--)
        {
            A[j] = A[j-1];
        }
        A[j] = Temp;
    }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多