C/C++有序数组中插入元素

一、不利用指针

代码:

int i;
void insert(int ,int , int );
int main() {
	int a[100];
	int n, m;
	cout<<"输入数组元素个数\n";
	cin >> n;
	cout << "输入数组元素\n";
	for (i = 0; i < n; i++) {
		cin >> a[i];
	}
	cout << "输入你要插入的元素\n";
	cin >> m;
	insert(a, n, m);
	n++;  //元素增加了一个!!!
	for (i = 0; i < n; i++) {
		cout << a[i] << " ";
	}
}
void insert(int a[], int n, int m){
	for (i = n-1; i >= 0; i--) {
		if (m < a[i])
			a[i + 1] = a[i];
		else
			break;
	}
	a[i + 1] = m;
	
}


运行结果: 

C/C++有序数组中插入元素_第1张图片

 二、利用指针

  怎样利用指针向数组中输入元素呢?方法是让指针首先指向数组第一个元素,再将指针依次向后移动一个位置,指向下一个元素,直到指向最后元素,如下所示。

int a[100];
int* p = a;
int n;
cin >> n;
for( ; p < a + n; p++)
	cin >> *p;

 利用指针的完整代码:

int i;
void insert(int ,int , int );
int main() {
	int a[100];
	int n, m;
	cout<<"输入数组元素个数\n";
	cin >> n;
	cout << "输入数组元素\n";
	int* p = a;
	for (; p< a+n; p++) {
		cin >> *p;
	}
	cout << "输入你要插入的元素\n";
	cin >> m;
	insert(a, n, m);    
	    n++;                    
	   for(;p=a;--p)
       if(m<*p)   *(p+1)=*p;
        else   break;
      *(p+1)=m;

你可能感兴趣的:(算法,数据结构,c语言,c++)