您的位置:首页 > 其它

组合有序数组 循环删除数组元素

2009-11-01 21:09 225 查看
/*

    ary1 和 ary2 是两个已排序的数组,其大小分别为n和m

 将ary1和ary2合并为一个有序数组comp_ary

*/

int* CSort::my_compsort(int *ary1,int n,int *ary2,int m)

{

 int i=0,j=0,k=0;

 int * comp_ary=NULL;

 comp_ary=new int[m+n];

 while((i<n) && (j<m))

 {

  if(ary1[i]<ary2[j])

  {

   comp_ary[k++]=ary1[i];

   i++;

  }

  else

  {

   comp_ary[k++]=ary2[j];

   j++;

  }

 }

 if(i>=n)

 {

  for(;j<m;j++)

   comp_ary[k++]=ary2[j];

 }

 else

 {

  for (;i<n;i++)

   comp_ary[k++]=ary1[i];

 }

 return comp_ary;

}

/*

    对于大小为n的数组ary,从编号0开始每隔m个元素循环删除一个元素

 输出为依次删除元素的编号

*/

int* CSort::my_cirldele(int *ary,int n,int m)

{

 int ct=0,i=0,j=0;

 int *fg=NULL;

 fg=new int
;

 int *del_ary=NULL;

 del_ary=new int
;

 for(i=0;i<n;i++)

  fg[i]=1;

 while(ct<n)

 {

  while(i<n)

  {

   if(fg[i]==1)

   {

    if(j==0)

    {

     del_ary[ct++]=i;

     fg[i]=0;

     j=m+1;

    }

    j--;

   }

   i++;

  }

  i=0;

 }

 return del_ary;

}

// my_algorithm.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include "Sort.h"

#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

 /////////////////////////////////////////////////////

 ////    将两个有序数组合成一个有序数组    ///////////

/* 

 int A[5]={1,3,4,7,9};

 int B[6]={2,3,5,7,8,9};

 int* comp_ary=NULL;

 CSort m_Sort;

 comp_ary=m_Sort.my_compsort(A,5,B,6);

 for(int i=0;i<5+6;i++)

  cout<<comp_ary[i]<<"  ";

 delete []comp_ary;

 comp_ary=NULL;

*/

 /////////////////////////////////////////////////////

 ////////////    周期循环删除数组元素    /////////////

 int *ary=NULL;

 int n=11,m=2;

 CSort m_Sort;

 ary=m_Sort.my_cirldele(ary,n,m);

 for(int i=0;i<n;i++)

  cout<<ary[i]<<" ";

 

 getchar();

 return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ini delete null