第2章:算法基础

原创 2016年05月30日 20:21:09

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);
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

《大话数据结构》第2章 算法基础 2.8 函数的渐近增长

2.8 函数的渐近增长         我们现在来判断一下,两个算法A和B哪个更好。假设两个算法的输入规模都是n,算法A要做2n + 3次操作,你可以理解为先有一个n次的循环,执行完成后,再有一个n...

算法导论学习笔记 第2章 算法基础

本章介绍了一个贯穿本书的框架,后续的算法设计都是在这个框架中进行的。

算法导论-第2章 - 算法基础

2.1 插入排序 示例C代码------》》

第2章 算法基础-----排序算法

2.1 插入排序(增量法)排序问题: 输入:n个数的一个序列INSERTION-SORT(A) 1 for j=2 to A.length key=A[...

读书笔记:《算法导论》,第2章:算法基础

本章内容:贯穿本书的框架。 2.1 插入排序 排序问题。输入:n个数的序列;输出:输入序列的一个排列,满足递增性。 关键字:希望排序的数。输入以n个元素的数组形式出现。 算法的描述:伪代码。类似于真码...

第2章 jQuery之基础核心

2.1 代码风格 在jQuery程序中,不管是页面元素的选择、内置的功能函数,都是美元符号“$”来起始的。而这个“$”就是jQuery当中最重要且独有的对象:jQuery对象,所以我们在页面元素选择或...

Delphi开发人员指南 第一部份快速开发的基础 第2章 Object Pascal 语言(一)

====================================================== 注:本文源代码点此下载 =============================...

第2章 Java语言基础

2.1 字符 1.什么是java的字符? 字符的关键字是char 字符串是String 2.常见字符集的几种方式,他们各有什么特点? 1、最早在dos下写pascal的时候,就遇到ASCII字...

《营销管理》-第2章-审视营销管理的基础结构

看完这章,也觉得它好装13。所以。。开始是看了例子,然后再无语到扫了几眼,发现还挺有趣的....例子。。 这章主要是讲战略,调研,信息系统这些。挺无聊的。。 第一个是核心竞争力。现在为了实现更...

第一部分 GeoGeo脚本基础 第2章 程序结构

 第2章 程序结构 GeoGeo程序主体由函数构成,而函数由代码块构成,代码块由一条条的语句组成。有几个特殊环节需要特别注意。 代码控制等语句只支持语句块,不支持单独的一条语句...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)