向升序数组中插入元素的三种方式
程序员文章站
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;
}
- 引入一个新数组的方式
#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;
}
上一篇: C语言数组基础知识总结
下一篇: 回形数的Java代码