算法导论第2章—算法基础
来源:互联网 发布:fm2016经典球星数据库 编辑:程序博客网 时间:2024/05/18 01:27
2.1 插入排序
#include<iostream>using namespace std;void Insertion_Sort(int *A,int n); //声明void Print(int *A,int n);void Insertion_Sort(int *A,int n){for(int j=1;j<n;j++){int key=A[j];int i=j-1;while(i>=0&&A[i]>key){A[i+1]=A[i];i=i-1;}A[i+1]=key;}}void Print(int *A,int n){for(int i=0;i<6;i++)cout<<A[i]<<" ";cout<<endl;}int main(){int A[]={5,2,4,6,1,3};int n=sizeof(A)/sizeof(A[0]);Insertion_Sort(A,n);Print(A,n);return 0;}
循环不变式
循环不变式主要用来帮助我们理解算法的正确性。必须证明三条性质:
初始化:循环的第一次迭代之前,它为真。
保持:如果循环的某次迭代之前它为真,那么下次迭代之前它仍为真。
终止:在循环终止时,不变式为我们提供一个有用的性质,该性质有助于证明算法是正确的。
2.2 分析算法
2.3 设计算法
归并排序:
#include<iostream>using namespace std;const int NIL=100000000;void Merge(int *A,int p,int q,int r);void Merge_Sort(int *A,int p,int r);void Print(int *A,int p,int r);void Merge(int *A,int p,int q,int r){int n1=q-p+1;int n2=r-q;int L[100],R[100];for(int i=0;i<n1;i++)L[i]=A[p+i];for(int j=0;j<n2;j++)R[j]=A[q+j+1];L[n1]=NIL;R[n2]=NIL;int i=0,j=0;for(int k=p;k<=r;k++){if(L[i]<=R[j]){A[k]=L[i];i=i+1;}else{A[k]=R[j];j=j+1;}}}void Merge_Sort(int *A,int p,int r){if(p<r){int q=(p+r)/2;Merge_Sort(A,p,q);Merge_Sort(A,q+1,r);Merge(A,p,q,r);}}void Print(int *A,int p,int r){for(int i=p;i<=r;i++)cout<<A[i]<<" ";cout<<endl;}int main(){int A[]={0,0,0,0,0,0,0,0,0,2,4,5,7,1,2,3,6,0,0};Merge_Sort(A,9,16);Print(A,9,16);return 0;}
0 0
- 算法导论-第2章 - 算法基础
- 算法导论第2章—算法基础
- <算法导论>学习笔记(2)--第2章 算法基础
- 算法导论学习笔记 第2章 算法基础
- 读书笔记:《算法导论》,第2章:算法基础
- 《算法导论》笔记系列之第2章算法基础
- 《算法导论》笔记:第2章 算法基础
- 《算法导论》第2章 算法基础 个人笔记
- 算法导论-第2章
- 《算法导论》笔记:第2章
- 算法导论随笔(第2章)
- [算法导论 第2章]归并排序
- 算法导论第15章15.2-2
- 《算法导论》第2章总结
- 算法导论第2章习题解析
- 《算法导论》笔记 第15章 15.3 动态规划基础
- 算法导论第3章
- 算法导论-第1章
- 黑马程序员_JAVA基础_IO流(一)
- fedora下字体安装
- 编程珠玑中一些算法
- linux下删除文件以及文件夹命令
- 【DataStructure】One of queue usage: Simulation System
- 算法导论第2章—算法基础
- AI:**消灭程序员需要一百年吗?
- 字符编码GB2312、GBK、UTF-8的区别
- 运放的各个参数名词解释 (含英文)
- springMvc ajax 操作及配置
- 系统审计学习
- Kernel调度器负载均衡(一)
- C++中const与指针
- maven安装配置JAVA_HOME环境变量