当前位置: 首页 > 科技观察

轻松掌握编程的基本算法(一)

时间:2023-03-22 16:28:13 科技观察

作者好久没有更新博客了,一个原因是开发的项目用到的技术都是老技术点,自己接触到的知识接触的是行业的逻辑流程,所以我只是做了一个总结,不分享。还有一个原因是笔者目前正在重新学习C++语言和一些计算机基础知识(算法等)。下面的代码是C++代码,所以直接上基本编程算法(1)基本编程算法(2)基本编程算法(3)Binarysearch,也叫二分查找。使用条件:有序收藏。算法思路:先确定要查记录的范围(区间),然后逐渐缩小范围,直到找到或找不到。重点是将记录在中间位置的关键字与给定的值进行比较。如果大于给定的值(这里假设集合是从小到大排列的),那么可以缩小区间范围(集合的开始-->中间位置的前一个位置),将区间中间位置记录的关键字与给定值进行比较,依次循环到找到或未找到的位置。示例编程:这是一个整数数据inta[10]={1,5,10,13,17,23,65,77,81,93};(1)这是递归(感谢园丁zdd指出这里的判断如果条件不对,应该改成if(min>max)//二分查找//数组必须是一定顺序的//参数:***、minimum、target(参数类型为整数)intBinarySearch(intmin,intmax,intnum){if(min==max)return-1;intmid=(min+max)/2;if(a[mid]==num)returnmid;elseif(a[mid]num)max=mid-1;elsemin=mid+1;}return-1;}性能分析:时间复杂度O(logn)插入排序使用条件:可比大小集算法思路:向已排序的序列中插入一条记录,得到一条新的记录,增加记录数为1的有序序列。待插入的记录按顺序进行比较,并已排好序。如果序列号大于要插入的记录,则将序列向后移动一位,直到发现序列号小于要插入的记录。那么此时会在序列的下一个位置插入,依次进行上面的操作,直到该位置被插入。编程示例:intb[10]={77,1,65,13,??81,93,10,5,23,17}sortit//insertsort//这里temp是sentinelbit//从小到大voidInsertSort(){inttemp;intj;for(inti=1;i<10;i++){temp=b[i];for(j=i-1;j>=0;j--){if(b[j]>temp){b[j+1]=b[j];}else{break;}}b[j+1]=temp;}cout<<"thesortis:";for(inti=0;i<10;i++){cout<temp){max=mid-1;}else{min=mid+1;}}for(j=i-1;j>=max+1;j--){b[j+1]=b[j];}b[max+1]=temp;}cout<<"thesortis:";for(inti=0;i<10;i++){cout<