欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

向升序数组中插入元素的三种方式

程序员文章站 2022-04-05 16:06:59
...

1.从前面一直找的方式

#include<iostream>
using namespace std;
int main()
{
	int num,insertions;
	cin>>num>>insertions;	
	int arr[num+1]={0};
	
	for(int t=0;t<num;t++)
	cin>>arr[t];
	for(int t=0;t<num;t++){
		if(arr[t]>=insertions){
			for(int k=num;k>=t;k--){
				arr[k]=arr[k-1];
			}
			arr[t]=insertions;
			break;
		}
	}
	for(int t=0;t<num+1;t++)
	cout<<arr[t]<<' ';
	return 0;
}
  1. 引入一个新数组的方式
#include<iostream>
using namespace std;
int main()
{
	int num,insertions,k;
	cin>>num>>insertions;	
	int arr[num]={0},arr1[num+1]={0};
	
	for(int t=0;t<num;t++)
	cin>>arr[t];
	for(int t=0;t<num;t++){
		if(arr[t]>=insertions){
			for(k=num;k>t;k--){
				arr1[k]=arr[k-1];
			}
			arr1[k]=insertions;
			for(k--;k>=0;k--){
				arr1[k]=arr[k];
			}
			break;
		}
	}
	for(int t=0;t<num+1;t++)
	cout<<arr1[t]<<' ';
	return 0;
}//注意的问题就是,这里的k只用到t+1,就行

向升序数组中插入元素的三种方式
3. 丛数组后面开始遍历

#include<iostream>
using namespace std;
int main()
{
	int num,insertions,k,flags=0;//flags用来判断插入元素是最小值的情况
	cin>>num>>insertions;	
	int arr[num+1]={0};
	
	for(int t=0;t<num;t++)
	cin>>arr[t];
	for(int t=num-1;t>=0;t--){
		if(arr[t]<=insertions){
			for(k=num;k>t+1;k--){//注意这里是t+1, 因为是从后向前的所以这里
				arr[k]=arr[k-1];//找到的k是比它小的那一个,所以先要加一
			}
			arr[k]=insertions;
			flags=1;
			break;
		}
	}
	if(!flags){//如果它是最小的,则将所有元素向后挪再放入
		for(int t=num;t>0;t--){
			arr[t]=arr[t-1];
		}
		arr[0]=insertions;
	}
	for(int t=0;t<num+1;t++)
	cout<<arr[t]<<' ';
	return 0;
}
相关标签: 数组