第2章:算法基础

1:插入排序:

代码如下:

template<class Type>
void insertionSort(vector<Type>& a)
{
        for(typename vector<Type>::size_type i=1;i!=a.size();i++)
        {
                Type tmp=a[i];
                typename vector<Type>::size_type j;
                for(j=i;j>=1&&tmp<a[j-1];j--)
                        a[j]=a[j-1];
                a[j]=tmp;
        }
}

2:归并排序:

归并排序用到了分治算法,代码如下:

template<class Type>
void merge(vector<Type>& a,vector<Type>& tempArray, int leftPos,int rightPos,int rightEnd)
{
        int leftEnd=rightPos-1;
        int tempPos=leftPos;
        int numElements=rightEnd-leftPos+1;

        while( leftPos<=leftEnd && rightPos<=rightEnd)
                if(a[leftPos]<=a[rightPos])
                        tempArray[tempPos++]=a[leftPos++];
                else
                        tempArray[tempPos++]=a[rightPos++];

        while(leftPos<=leftEnd)
                tempArray[tempPos++]=a[leftPos++];

        while(rightPos<=rightEnd)
                tempArray[tempPos++]=a[rightPos++];

        for(int i=0;i!=numElements;i++,rightEnd--)
                a[rightEnd]=tempArray[rightEnd];
}

template<class Type>
void mergeSort(vector<Type>& a,vector<Type>& tempArray,int left,int right)
{
        if(left<right){
                int center=(left+right)/2;
                mergeSort(a,tempArray,left,center);
                mergeSort(a,tempArray,center+1,right);
                merge(a,tempArray,left,center+1,right);
        }
}

template<class Type>
void mergeSort( vector<Type>& a)
{
        vector<Type> tempArray(a.size());
        mergeSort(a,tempArray,0,a.size()-1);
}
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weishenmetlc/article/details/51540787
个人分类: 算法导论-CLRS
想对作者说点什么? 我来说一句

第2章 C++语言基础

2009年02月02日 489KB 下载

没有更多推荐了,返回首页

不良信息举报

第2章:算法基础

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭