码迷,mamicode.com
首页 > 编程语言 > 详细

算法导论第二章

时间:2016-05-02 15:28:33      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:

插入排序源码:

技术分享
 1 #include <iostream>
 2 #include <cstdio>
 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 <iostream>
 2 #include <cstdio>
 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 <iostream>
 2 #include <cstdio>
 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<n1;i++)
13         L[i]=a[p+i];
14     for(i=0;i<n2;i++)
15         R[i]=a[q+i+1];
16     
17     L[n1]=inf;R[n2]=inf;
18     i=0;j=0;
19     for(int k=p;k<=r;k++)
20     {
21         if(L[i]<=R[j])
22         {
23             a[k]=L[i];
24             i++;
25         }
26         else
27         {
28             a[k]=R[j];
29             j++;
30         }
31     }
32 }
33 
34 
35 int main()
36 {
37     int i;
38     int a[10];
39     for(i=0;i<10;i++)
40         scanf("%d",&a[i]);
41     merge_sort(a,0,4,9);
42     for(i=0;i<10;i++)
43         printf("%3d",a[i]);
44     puts("");
45     return 0;
46 }
View Code

 

算法导论第二章

标签:

原文地址:http://www.cnblogs.com/do-it-best/p/5452335.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!