算法导论学习笔记17_9_7
来源:互联网 发布:吉林国际软件 编辑:程序博客网 时间:2024/06/03 16:24
这几天学习了几个算法:
1.插入排序:
//插入排序
#include<stdio.h>
void insertSort(int *a,int n){
int i,j,key;
for(i=1;i<n;i++){
key=a[i];
j=i-1;
while(j>=0&&a[j]>key){
a[j+1]=a[j];
j--;
a[j+1]=key;
}
}
}
int main(){
int a[5]={3,9,6,5,7};
int len=5;
insertSort(a,len);
for(int i=0;i<5;i++){
printf("%d ",a[i]);
}
return 0;
}
2.归并算法
#include<stdio.h>
//·ÖÖι鲢Ëã·¨
void MERGE(int *a,int head,int mid,int end){
int temp[end-head+1];
int h=head,m=mid,n=mid+1,e=end;
int k=0;
while(h<=m&&n<=e){
if(a[h]<a[n]){
temp[k++]=a[h++];
}else{
temp[k++]=a[n++];
}
}
while(h<=m){
temp[k++]=a[h++];
}
while(n<=e){
temp[k++]=a[n++];
}
k=0;
for(k=0;k<end-head+1;k++){
a[k+head]=temp[k];
}
}
void MERGE_sort(int *a,int head,int end){
if(head<end){
int mid=(head+end)/2;
MERGE_sort(a,head,mid);
MERGE_sort(a,mid+1,end);
MERGE(a,head,mid,end);
}
}
int main(){
int a[]={6,9,3,1,164,0,64,974};
MERGE_sort(a,0,7);
for(int i=0;i<8;i++){
printf("%d ",a[i]);
}
return 0;
}
3.最大子数组
#include<stdio.h>
#include<stdlib.h>
#include<limits.h>
//最大子数组
int cross_max(int *a,int head,int mid,int end){
int left_max=INT_MIN,right_max=INT_MIN;
int sum=0;
for(int i=mid;i>=head;i--){
sum+=a[i];
if(left_max<sum){
left_max=sum;
}
}
sum=0;
for(int j=mid+1;j<=end;j++){
sum+=a[j];
if(right_max<sum){
right_max=sum;
}
}
return (left_max+right_max);
}
int maxsubset(int *a,int head,int end){
if(head==end){
return a[head];
}
int mid=(head+end)/2;
int l_max=INT_MIN;
int r_max=INT_MIN;
int m_max=INT_MIN;
l_max=maxsubset(a,head,mid);
r_max=maxsubset(a,mid+1,end);
m_max=cross_max(a,head,mid,end);
if(l_max>=r_max&&l_max>=m_max){
return l_max;
}else if(r_max>=l_max&&r_max>=m_max){
return r_max;
}else{
return m_max;
}
}
int main(){
int a[]={2,-6,3,-9,5,6,8,-15,6,60,-19,20};//12个
printf("the maxsubset:%d\n",maxsubset(a,0,11));
return 0;
}
- 算法导论学习笔记17_9_7
- 《算法导论》学习笔记
- 《算法导论》学习笔记
- 算法导论学习笔记
- 《算法导论》学习笔记
- 算法导论学习笔记-1
- 算法导论学习笔记-2
- 算法导论分而治之学习笔记
- 《算法导论》学习笔记 前言
- 算法导论--学习笔记01
- 算法导论--学习笔记02
- 算法导论--学习笔记03
- 算法导论----学习笔记04
- 算法导论------学习笔记05
- 算法导论---学习笔记06
- 算法导论---学习笔记07
- 算法导论----学习笔记08
- 算法导论--学习笔记09
- 欢迎使用CSDN-markdown编辑器
- MySQL学习笔记二(索引的操作)
- Lua_语句_循环语句_006
- LPC2138综述
- Java POI 设置Excel单元格的宽度和高度
- 算法导论学习笔记17_9_7
- 2017.8.7测试 题四 WJ的逃离
- 客户机/服务器一对一通信模型
- Linux中用Nginx和FTP搭建图片服务器
- LeetCode
- HDU3549 Flow Problem 【网络流E-K算法模板】
- 【14】vue.js — 自定义标签
- 数据库之数据类型
- 陷入迷茫