C++数组中插入元素。

网友投稿 286 2022-09-23

C++数组中插入元素。

问题:

在已经排序的数组中插入一个数,插入后的数组仍是有序的。

为了简化问题,将顺序规定为升序数组类型为double。

插入函数的代码如下:

//将data插入到数组arr中,使插入后仍是升序。void insert(double data,double arr[],int len){ for (int i = 0; i < len; ++i) { if (datai; --j) arr_t[j] = arr[j-1]; //后移 arr_t[i] = data; //插入 for (int k = 0; k< i; ++k) arr_t[k] = arr[k]; delete []arr; arr = new double[len]; for(int index = 0;index

1.遍历数组,(0到len-1),

遇到第一个比data大的数arr[i] 就将data插入到这个位置i.

插入的方法:

由于多了一个数,原来的数组大小应该+1才能装下这些数。

所以数组长度 len++;由于长度变化了,数组也就变了。于是用arr_t 来 new 一个新的数组。

将第i个元素以及i后面的元素向后移,将data插入到i位置。然后将i之前的元素复制到arr_t数组中,

此时得到了插入了data后的数组arr_t。

再将arr_t 深复制到原来的数组arr中即可。

然而这个方法有问题,当data>=arr[len-1]时,即arr数组中没有比dada大的数时,上面的方法就没法处理了。

于是对这种情况进行处理。

这种情况不需要后移,只要将data放在最后就可以。

void insert(double data, double arr[], int len){ if (data >= arr[len - 1]) { len++; double *arr_t = new double[len]; arr_t[len - 1] = data; for (int m = 0; m < len - 1; m++) arr_t[m] = arr[m]; //深复制arr_t到arr中 delete[]arr; arr = new double[len]; for (int index = 0; index i; --j) arr_t[j] = arr[j - 1]; //后移 arr_t[i] = data; //插入 for (int k = 0; k< i; ++k) arr_t[k] = arr[k]; //深复制arr_t到arr中 delete[]arr; arr = new double[len]; for (int index = 0; index

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:C Primer Plus 第6版 第5章 编程练习
下一篇:旺旺上半财年营收约103亿元,同比增长一成!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~