博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法导论第二章
阅读量:5066 次
发布时间:2019-06-12

本文共 3164 字,大约阅读时间需要 10 分钟。

插入排序源码:

1 #include 
2 #include
3 4 using namespace std; 5 6 void insert_sort(int a[]) 7 { 8 for(int j=1;j<10;j++) 9 {10 int key=a[j];11 int i=j-1;12 while(i>=0 && a[i]>key)13 {14 a[i+1]=a[i];15 i--;16 }17 a[i+1]=key;18 }19 }20 21 int main()22 {23 int a[10];24 int i;25 for(i=0;i<10;i++)26 scanf("%d",&a[i]);27 insert_sort(a);28 for(i=0;i<10;i++)29 printf("%3d",a[i]);30 puts("");31 return 0;32 }
View Code

逆序输出:

1 #include 
2 #include
3 4 using namespace std; 5 6 void insert_sort(int a[]) 7 { 8 for(int j=1;j<10;j++) 9 {10 int key=a[j];11 int i=j-1;12 while(i>=0 && a[i]
View Code

分治法:合并排序

对于两堆以排好序的,最底层的运行逻辑:

1 #include 
2 #include
3 #define inf 1e9 4 using namespace std; 5 6 void merge_sort(int a[],int p,int q,int r) 7 { 8 int n1=q-p+1; 9 int n2=r-q;10 int i,j;11 int L[n1+1],R[n2+1];12 for(i=0;i
View Code

 一般性源码:

1 #include 
2 #include
3 4 #define inf 1e9 5 6 using namespace std; 7 8 void merge_sort(int a[],int p,int q,int r) 9 {10 int n1=q-p+1;11 int n2=r-q;12 int L[n1+1],R[n2+1];13 int i,j;14 15 for(i=0;i
=r)39 return;40 int q=(p+r)/2;41 Merge_sort(a,p,q);42 Merge_sort(a,q+1,r);43 merge_sort(a,p,q,r);44 }45 46 int main()47 {48 int a[10];49 int i;50 for(i=0;i<10;i++)51 scanf("%d",&a[i]);52 Merge_sort(a,0,9);53 for(i=0;i<10;i++)54 printf("%3d",a[i]);55 puts("");56 return 0;57 }
View Code

不设置哨兵

1 #include 
2 #include
3 4 5 using namespace std; 6 7 void merge_sort(int a[],int p,int q,int r) 8 { 9 int n1=q-p+1;10 int n2=r-q;11 int L[n1+1],R[n2+1];12 int i,j;13 14 for(i=0;i
=r)52 return;53 int q=(p+r)/2;54 Merge_sort(a,p,q);55 Merge_sort(a,q+1,r);56 merge_sort(a,p,q,r);57 }58 59 int main()60 {61 int a[10];62 int i;63 for(i=0;i<10;i++)64 scanf("%d",&a[i]);65 Merge_sort(a,0,9);66 for(i=0;i<10;i++)67 printf("%3d",a[i]);68 puts("");69 return 0;70 }
View Code

利用归并排序求逆序数

1 #include 
2 #include
3 #define inf 1e9 4 5 using namespace std; 6 int cnt; 7 8 void merge_sort(int a[],int p,int q,int r) 9 {10 int n1=q-p+1;11 int n2=r-q;12 int L[n1+1],R[n2+1];13 int i,j;14 15 for(i=0;i
=r)41 return;42 int q=(p+r)/2;43 Merge_sort(a,p,q);44 Merge_sort(a,q+1,r);45 merge_sort(a,p,q,r);46 }47 48 int main()49 {50 int a[8];51 int i;52 for(i=0;i<5;i++)53 scanf("%d",&a[i]);54 cnt=0;55 Merge_sort(a,0,4);56 for(i=0;i<5;i++)57 printf("%3d",a[i]);58 puts("");59 printf("%d\n",cnt);60 return 0;61 }
View Code

 

转载于:https://www.cnblogs.com/do-it-best/p/5452335.html

你可能感兴趣的文章
CPU,寄存器,一缓二缓.... RAM ROM 外部存储器等简介
查看>>
windows下编译FreeSwitch
查看>>
git .gitignore 文件不起作用
查看>>
Alan Turing的纪录片观后感
查看>>
c#自定义控件中的事件处理
查看>>
二十六、Android WebView缓存
查看>>
django Models 常用的字段和参数
查看>>
IOS--沙盒机制
查看>>
使用 JointCode.Shuttle 访问任意 AppDomain 的服务
查看>>
sqlite的坑
查看>>
digitalocean --- How To Install Apache Tomcat 8 on Ubuntu 16.04
查看>>
【题解】[P4178 Tree]
查看>>
Jquery ui widget开发
查看>>
更改git仓库地址
查看>>
有标号DAG计数 [容斥原理 子集反演 组合数学 fft]
查看>>
Recipe 1.4. Reversing a String by Words or Characters
查看>>
Rule 1: Make Fewer HTTP Requests(Chapter 1 of High performance Web Sites)
查看>>
sql注入
查看>>
「破解」Xposed强
查看>>
src与href的区别
查看>>