加文

在这个世界上取得成就的人,都努力去寻找他们想要的机会,如果找不到机会,他们便自己创造机会。 -- 萧伯纳
随笔 - 14, 文章 - 56, 评论 - 1, 引用 - 0
数据加载中……

有序表归并

#include <iostream>
using namespace std;
//参数:r表示待排序数组,s为r中第一个有序表的第一个下标,m为第一个有序表的最后一个下标;s是r中的最后一个下标
void merge( int r[],int s,int m,int t)
{
    
int tempr[50];
    
for(int k = s; k <= t; k++ )
        tempr[k] 
= r[k];
    
int s1 = s;
    
int s2 = m+1;
    
int rs = s;
    
while(s1 <= m && s2 <= t)
        
if(tempr[s1]<=tempr[s2])
            r[rs
++= tempr[s1++];
        
else
             r[rs
++= tempr[s2++];
    
while(s1 <= m)
        r[rs
++= tempr[s1++];
    
while(s2 <= t)
        r[rs
++= tempr[s2++];
 }  
 
 
int main()
 {
     
int r[6= {34,45,56,2,4,6};
     merge(r,
0,2,5);
     
for(int i=0;i<6;i++)        
         cout
<<r[i]<<endl;
     getchar();
     
return 0;
}

posted on 2011-10-25 00:41 chxzwj 阅读(222) 评论(0)  编辑 收藏 引用 所属分类: 常用算法


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理