c++配列秩序配列挿入集計並べ替え思想
1424 ワード
2つの秩序配列arr 1およびarr 2の場合、arr 1の末尾にはarr 2を収容するのに十分な空間がある.
arr 2のすべての配列をarr 1に挿入し、挿入後の配列が依然として秩序ある配列であるようにする.
解決策は,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]
上記のコードの主な考え方は,テールからヘッドへの比較を行い,複雑さを低減するとともに,同じ数字を複数回コピーすることを回避することである.