c++入门教程7:增删改查

📅 2026/7/30 10:10:53
c++入门教程7:增删改查
本文描述了c数组的增删改查。增删改查是数组的基础应用是新手必不可少的技术。若没学过数组见《c入门教程6一维数组即其应用》。一篇不是那么正经的教程。1. 增增指的是在数组中任意位置插入一个数例如若我们想在a[10]{0,1,2,3,4,5}a[10]\{0,1,2,3,4,5\}a[10]{0,1,2,3,4,5}中第sss个位置插入一个6。那么我们的数组原本是idx0123456…val01234500现在假设我们要在下标为3的位置插入6那么我们就要吧数组变成这样idx0123456…val01263450你会发现我们其实就在把第sss到第nnn个位置的元素都往后移一位再把sss的元素赋值为要替换的数字。即#includebits/stdc.husingnamespacestd;intmain(){inta[10]{0,1,2,3,4,5};ints3,n5,x6;for(intin1;is;i--){a[i]a[i-1];}a[s]x;n1;for(inti1;in;i){couta[i] ;}return0;}2. 删同理删就是指删除数组中任意位置的数即idx0123456…val01234500s3s3s3⇓\huge\Downarrow⇓idx0123456…val01245000也就是从s1s1s1开始往前移一位。即#includebits/stdc.husingnamespacestd;intmain(){inta[10]{0,1,2,3,4,5};ints3,n5;for(intis;in;i){a[i]a[i1];}a[n]0;n-1;for(inti1;in;i){couta[i] ;}return0;}3. 改改指的是把任意一个数组中的数替换成另一个数。例如将下标为sss的数替换为 6假设s3s3s3。即idx0123456…val01234500⇓\huge\Downarrow⇓idx0123456…val01264500即#includebits/stdc.husingnamespacestd;intmain(){inta[10]{0,1,2,3,4,5};ints3,n5,x6;a[s]x;for(inti1;in;i){couta[i] ;}return0;}4. 查即在数列中找到一个数所在的位置。这里分枚举查找和二分查找后续分治算法的基础枚举查找这个很简单就是一个一个找这里不说别的直接贴代码#includebits/stdc.husingnamespacestd;intmain(){inta[10]{0,1,2,3,4,5};ints3,n5,num3,ans;for(inti1;is;i){if(a[i]num){ansi;}}coutans;return0;}二分查找在某些情况下正常查找会TLETLETLE超时。 就比如在1~100里查找 97 正常循环枚举要找 97 次才能找到但如果每次按这个策略试中间值。若找到了那么恭喜你。若你要找的数比中间值大那么说明答案在中间值的右边。于是你现在可以对右侧执行此流程若你要找的数比中间值小那么说明答案在中间值的左边。于是你现在可以对左侧执行此流程那么我们来看看第一次找到mid(1100)/250,97midmid(1100)/250, 97midmid(1100)/250,97mid第二次mid(51100)/275,97midmid(51100)/275,97midmid(51100)/275,97mid第三次mid(76100)/288,97midmid(76100)/288,97midmid(76100)/288,97mid第四次mid(89100)/294,97midmid(89100)/294,97midmid(89100)/294,97mid,第五次mid(95100)/297,97midmid(95100)/297,97midmid(95100)/297,97mid找到了。只用了5次相比于97次是不是少了很多。现在我按照这个原理贴个代码#includeiostreamusingnamespacestd;intmain(){inta[10]{0,2,4,6,8,10,12,14};intn7;intnum10;intl1,rn;intans-1;while(lr){intmid(lr)/2;if(a[mid]num){ansmid;break;}if(a[mid]num){lmid1;}else{rmid-1;}}coutans;return0;}好了那么今天的增删改查我就讲完了本文到这里也结束了感谢大家的浏览请点个赞以示支持。