算法入门(算法导论第二章)

ExpandedBlockStart.gif Insertion Sort
 1  void  InsertionSort( int *  array,  int  size)
 2  {
 3       for ( int  i = 1 ; i < size; i ++ )
 4      {
 5           int  j  =  i;
 6           int  current  =  array[i];
 7           while ((j > 0 &&  (array[j - 1 >  current))
 8          {
 9              array[j]  =  array[j - 1 ];
10              j -- ;
11          }
12          array[j]  =  current;
13      }
14  }

 

ExpandedBlockStart.gif Merge Sort
 1  void  merge( int  data[],  int  p,  int  q,  int  r) 
 2  {     
 3       int  i, j, k, n1, n2;     
 4      n1  =  q  -  p  +   1 ;     
 5      n2  =  r  -  q;     
 6       int  L[n1];     
 7       int  R[n2];      
 8       for (i  =   0 , k  =  p; i  <  n1; i ++ , k ++ )         
 9          L[i]  =  data[k];     
10       for (i  =   0 , k  =  q  +   1 ; i  <  n2; i ++ , k ++ )         
11          R[i]  =  data[k];     
12       for (k  =  p, i  =   0 , j  =   0 ; i  <  n1  &&  j  <  n2; k ++ )     
13      {         
14           if (L[i]  >  R[j])         
15          {             
16              data[k]  =  L[i];             
17              i ++ ;         
18          }         
19           else          
20          {             
21              data[k]  =  R[j];             
22              j ++ ;         
23          } 
24      }
25       if (i  <  n1)     
26      {         
27           for (j  =  i; j  <  n1; j ++ , k ++ )             
28          data[k]  =  L[j];     
29      }     
30       if (j  <  n2)     
31      {         
32           for (i  =  j; i  <  n2; i ++ , k ++ )             
33              data[k]  =  R[i];     
34      }  
35  }
36 
37  void  merge_sort( int  data[],  int  p,  int  r) 
38  {     
39       if (p  <  r)     
40      {         
41           int  q  =  (p  +  r)  /   2 ;         
42          merge_sort(data, p, q);         
43          merge_sort(data, q  +   1 , r);         
44          merge(data, p, q, r);     
45      } 
46 

 

 

转载于:https://www.cnblogs.com/zhtf2014/archive/2010/11/14/1877183.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值