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

区块链基础知识

区块链基础知识从2016年开始博主开始关注区块链技术,伴随的科技浪潮的袭来,又将面对一次互联网技术革新。虽说区块链的本质是密码学与p2p的一次融合,但是伴随着越来越多的人才涌入到这一领域。在共识机制上...
  • Dear_Mr_Wang
  • Dear_Mr_Wang
  • 2017年06月15日 21:57
  • 635

《算法竞赛入门经典》读书笔记 第二章 循环结构程序设计

《算法竞赛入门经典》读书笔记 第二章 循环结构程序设计 2.1 For循环 知识点1:For循环语法结构  for(int i = 1; i        printf("%d\n",i)...
  • yzzxliuchao
  • yzzxliuchao
  • 2015年03月23日 10:24
  • 275

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

2.1 插入排序(增量法)排序问题: 输入:n个数的一个序列INSERTION-SORT(A) 1 for j=2 to A.length key=A[...
  • u010177286
  • u010177286
  • 2015年04月02日 11:50
  • 322

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

2.1 插入排序 #include using namespace std; void Insertion_Sort(int *A); //声明 void Print(int *A); vo...
  • u013077167
  • u013077167
  • 2014年09月03日 21:06
  • 241

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

2.1 插入排序 示例C代码------》》
  • u012796139
  • u012796139
  • 2014年09月29日 13:21
  • 416

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

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

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

本章介绍了一个贯穿本书的框架,后续的算法设计都是在这个框架中进行的。...
  • GUANGZHAN
  • GUANGZHAN
  • 2015年03月10日 21:18
  • 556

《算法导论》笔记系列之第2章算法基础

这周我的任务是看完算法导论的第二章。这一章前言介绍了这章的主要讲述重点:伪代码、设计和分析算法的基本框架、怎样正确地分析算法的运行时间。并以归并排序为例子讲述这种方法的运用。...
  • u012640428
  • u012640428
  • 2017年01月07日 18:08
  • 121

《算法导论》第2章 算法基础 个人笔记

第2章 算法基础2.1 插入排序INSERTION-SORT(A) for j = 2 to A.length key = A[j] i = j - 1 while i > 0...
  • Amber07
  • Amber07
  • 2017年05月02日 12:31
  • 141

【数据结构】-线性表-顺序表-1323: 算法2-1:集合union

1323: 算法2-1:集合union题目链接请点击题目描述假设利用两个线性表LA和LB分别表示两个集合A和B(即:线性表中的数据元素即为集合中的成员),现要求一个新的集合A=A∪B。这就要求对线性表...
  • qq_24653023
  • qq_24653023
  • 2017年01月14日 13:26
  • 749
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第2章:算法基础
举报原因:
原因补充:

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