组合有序数组 循环删除数组元素
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;
}
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;
}
相关文章推荐
- 循环有序数组中的二分查找 Search in a rotated sorted array
- LeetCode 81 Search in Rotated Sorted Array II(循环有序数组中的查找问题)
- 如何删除有序数组中的重复元素
- 循环删除数组中的元素
- 利用哈希表实现数组的去重以及利用delete批量删除数组元素
- 第26-27章项目2-删除数组元素(二.数组升序)
- 在循环的过程中删除数组元素的问题
- 寻找循环有序数组的最小值 Find Minimum in Rotated Sorted Array
- 数组没隔两个数删除一个数最后循环求最后删除数的下标
- LeetCode 33 Search in Rotated Sorted Array(循环有序数组中进行查找操作)
- 删除有序数组中的重复元素 Remove Duplicates from Sorted Array
- 转:循环有序数组查找问题
- KT学算法(二)——循环有序数组查找指定元素
- 每天一道LeetCode-----从有序数组中删除重复元素
- 合并两个有序数组_向右循环移位
- [算法] 循环有序数组查找递归实现
- lintcode寻找旋转排序数组中的最小值/循环有序数组的查找
- MATLAB产生1到N的有序数组,重新随机排列数组,删除数组中某一个元素
- 二分查找进阶——循环有序数组查找再进阶——循环有序重复数组查找
- 有序数组的二分法查询、删除、插入java代码