算法导论系列文章之插入排序和归并排序
来源:互联网 发布:威力导演 知乎 编辑:程序博客网 时间:2024/05/16 00:38
本博文为算法导论系列的文章,博文的代码在VS2012下均编译通过,其实就是笔者把原书中的伪代码用c++写了出来而已.
前言:最近再看算法导论,所以打算按照学习进度把自己写的demo都发上来..
这次是 插入排序和归并排序..
至于这两种排序的时空复杂度之类的就不多说了,百度之..谷歌之..
所有的代码语言都是c++,编译环境是 vs2012..
//插入排序算法.//2013.12.25#include <iostream>using namespace std;typedef int ele;void InsertSort(ele sortArr[],int length);int main (){ele arr[]={5,3,5,2,7,4,7,4,8,3,8,9,4,8,4};auto length=15;InsertSort(arr,length);for(auto i=0;i<length;i++){cout<<arr[i]<<" ";}system("pause");return 0;}void InsertSort(ele sortArr[],int length){//插入排序,从第二个元素开始.for(auto i=1;i<length;i++){ele key=sortArr[i];auto j=i-1;while (j>=0&&sortArr[j]>key){sortArr[j+1]=sortArr[j];j--;}sortArr[j+1]=key;}return;}
//归并排序.//2013.12.25#include <iostream>using namespace std;typedef int ele;void Merge(ele arrSort[],int left,int mid,int right);void MergeSort(ele arrSort[],int left,int right);int main(){ele arr[]={3,1,7,3,2,4,4,3,3,0,5,3,2};auto length=12;MergeSort(arr,0,length);for(auto i=0;i<length;i++){cout<<arr[i]<<" ";}system("pause");return 0;}void Merge(ele arrSort[],int left,int mid,int right){int n1=mid-left;int n2=right-mid;ele *leftArr=new ele [n1+1];ele *rightArr=new ele [n2+1];for(int i=0;i<n1;i++)leftArr[i]=arrSort[left+i];for(int j=0;j<n2;j++)rightArr[j]=arrSort[mid+j];//注意此处,很巧妙,可以防止后续讨论.leftArr[n1]=INT_MAX;rightArr[n2]=INT_MAX;int a=0,b=0;for(int k=left;k<right;k++){if(leftArr[a]<=rightArr[b]){arrSort[k]=leftArr[a];a++;}else{arrSort[k]=rightArr[b];b++;}}}void MergeSort(ele arrSort[],int left,int right){if(right-left>1){int mid=(left+right)/2;MergeSort(arrSort,left,mid);MergeSort(arrSort,mid,right);Merge(arrSort,left,mid,right);}}
0 0
- 算法导论系列文章之插入排序和归并排序
- 算法导论:插入排序和归并排序
- 插入、归并排序 《算法导论》
- 算法导论:第一讲:插入排序和归并排序
- 算法导论系列文章之堆排序
- 算法导论系列文章之快速排序
- 算法导论系列文章之计数排序
- 练习《算法导论》之排序:插入排序,归并排序,堆排序,快速排序
- 算法导论之归并排序
- 算法导论-插入排序,归并排序,快速排序总结
- 《算法导论》学习笔记之Chapter 2-2.1,2.2,2.3插入排序,选择排序,归并排序
- 算法导论之插入排序
- 《算法导论》之:插入排序
- 算法导论之插入排序
- 算法导论之插入排序
- 算法导论之插入排序
- 《算法导论》中的冒泡排序、插入排序和归并排序实现
- 【算法导论】归并排序
- 使用memcached进行并发控制(写的非常好)
- 敏捷软件开发中的配置管理
- Java访问https接口实现
- LeetCode之Sort Colors
- common-pool连接池GenericObjectPool源代码
- 算法导论系列文章之插入排序和归并排序
- Javascript/Node.js 中的 this
- Java安全通信:HTTPS与SSL
- 工作便条ZHAOCM
- JedisPool使用原理及源代码
- Linux epoll模型
- Openssl command到API转换--password和key、iv转化以及openssl进行gdb调试
- 一些常用设计模式的应用场景
- 创建Ubuntu用户以及让新用户增加sudo权限