c++配列秩序配列挿入集計並べ替え思想

1424 ワード

2つの秩序配列arr 1およびarr 2の場合、arr 1の末尾にはarr 2を収容するのに十分な空間がある.
arr 2のすべての配列をarr 1に挿入し、挿入後の配列が依然として秩序ある配列であるようにする.
解決策は,arr 1とarr 2の数字の大きさを末尾から比較し,対応する位置に大きな数字を挿入することである.
具体的なコードは以下の通りです.
#include 
using namespace std;
/*template           ,    
int getArrayLen(T& arr)
{
    return (sizeof(arr)/sizeof(arr[0]));
}*/

void insertArray(int arr1[],int arr2[],int lastIndexOfArr1, int lastIndexOfArr2)   //                  
{
    if(lastIndexOfArr1<0 || lastIndexOfArr2<0)
    {
        return;
    }
    int newIndex=lastIndexOfArr1+lastIndexOfArr2+1;     //                     
    int len=newIndex+1;
    while(newIndex>0)                     //    ,         
    {
        if(arr1[lastIndexOfArr1]>=arr2[lastIndexOfArr2])
        {
            arr1[newIndex--]=arr1[lastIndexOfArr1];
            if(lastIndexOfArr1!=0)
                lastIndexOfArr1--;
        }
        else
        {
            arr1[newIndex--]=arr2[lastIndexOfArr2];
            if(lastIndexOfArr2!=0)
                lastIndexOfArr2--;
        }
        if(newIndex==0)    //     ,     ,      0    
        {
            arr1[0]=arr1[0]

上記のコードの主な考え方は,テールからヘッドへの比較を行い,複雑さを低減するとともに,同じ数字を複数回コピーすることを回避することである.