zoukankan      html  css  js  c++  java
  • 合并两个有序数组

    思路:
    跟替换字符串中的空格一样,都是从后往前遍历。由于从前往后遍历的话。元素须要移动的次数较多。
    示意图:

    代码:

    /******************************************
    两个有序数组的合并
    by Rowandjj
    2014/7/16
    ******************************************/
    #include<iostream>
    using namespace std;
    #define MAX 1024
    //合并有序数组a与有序数组b,合并后的数组为a(如果a足够大)
    void CombineArray(int a[],int b[],int a_len,int b_len)//a和b非降序排列,a_len和b_len分别a、b数组的实际长度
    {
    	if(a == NULL || b == NULL || a_len <= 0 || b_len <= 0 || a_len + b_len > MAX)
    	{
    		return;
    	}
    	int a_index = a_len-1;//指向数组a的指针(0~a_len-1)
    	int b_index = b_len-1;//指向数组b的指针
    	int n_index = a_len+b_len-1;//指向新数组的指针
    	
    	while(a_index>=0 && b_index>=0)
    	{
    		if(a[a_index] > b[b_index])
    		{
    			a[n_index--] = a[a_index--];
    		}else//a[a_index] <= b[b_index]
    		{
    			a[n_index--] = b[b_index--];
    		}
    	}
    	//合并完后发现还有数组没有遍历完
    	while(a_index >= 0)
    	{
    		a[n_index--] = a[a_index--];
    	}
    	while(b_index >= 0)
    	{
    		a[n_index--] = b[b_index--];
    	}
    }
    int main()
    {
    	int a[MAX] = {1,3,5,7};//数组a一定要足够大
    	int b[] = {2,4,6,8};
    	CombineArray(a,b,4,4);
    	for(int i = 0; i < 8; i++)
    	{
    		cout<<a[i]<<" ";
    	}
    	cout<<endl;
    	return 0;
    }


  • 相关阅读:
    java 删除文件目录
    java导出echart图到excel 多张图片导出
    java导出sql文件
    split方法使用
    jqgrid列表添加单选框
    会消失的链接
    运用javascript做出链接类特效
    创建守护进程的步骤
    ext2文件系统
    C++枚举类型enum
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/6738209.html
Copyright © 2011-2022 走看看