Loading... <div class="panel panel-default collapse-panel box-shadow-wrap-lg"><div class="panel-heading panel-collapse" data-toggle="collapse" data-target="#collapse-d106d1a998dea54205dbf47f25acac8675" aria-expanded="true"><div class="accordion-toggle"><span style="">冒泡法</span> <i class="pull-right fontello icon-fw fontello-angle-right"></i> </div> </div> <div class="panel-body collapse-panel-body"> <div id="collapse-d106d1a998dea54205dbf47f25acac8675" class="collapse collapse-content"><p></p> 冒泡法: 其实前面文章也有介绍,但为了更加的简单清晰,我再介绍一次吧! 冒泡法,顾名思义,水底泡泡从小到大依次浮出水面。 比较原理:比较相邻的两个元素,两两比较首先选出最大; 然后依次选出老二,老三,老四..............,老末 <p></p></div></div></div> <div class="panel panel-default collapse-panel box-shadow-wrap-lg"><div class="panel-heading panel-collapse" data-toggle="collapse" data-target="#collapse-2cebf03547f64f00ffbd178374c54b1144" aria-expanded="true"><div class="accordion-toggle"><span style="">二分法</span> <i class="pull-right fontello icon-fw fontello-angle-right"></i> </div> </div> <div class="panel-body collapse-panel-body"> <div id="collapse-2cebf03547f64f00ffbd178374c54b1144" class="collapse collapse-content"><p></p> 二分法:首先这组数据必须是有序数据,如果无序找到天涯海角也可能找不出; 其二,我们定义一个最小值,最大值,中间值=(最大值+最小值)/2, 如果我们要找的值等于中间值,即存在于这组数据中, 怎么才能判断最后要找的值是否等于中间值呢? 如果要找的值>中间值,则最小值等于中间值+1; 如果要找的值<中间值,则最大值等于中间值-1; 判断中间值都是在最小值小于等于最大值的前提之下; 如果最后中间值等于我们需要找的值,可以进行赋值变量 最后判断变量是否等于我们进行判断的赋值变量,如果ture则该数存于这组数据中,如果false则该数不存在这组数据中! <p></p></div></div></div> ```cpp #include<stdio.h> int main() { int a[10], i, j, max, mid, b, c, d, n,mm; for(i=0;i<10;i++) { printf("请输入第%d位数=",i+1); scanf("%d",&a[i]); } for(i=0;i<9;i++) //冒泡法实现从小到大排序 { for(j=0;j<9-i;j++) { if(a[j]>a[j+1]) { mid=a[j]; a[j]=a[j+1]; a[j+1]=mid; } } max=a[i+1]; } printf("最大值为=%d\n",max); printf("从小到大排列为:"); for(i=0;i<10;i++) //从小到大输出 { if(i<9) { printf("%d<",a[i]); } else { printf("%d\n",a[i]); } } for(i=0;i<10;i++) { b=0; d=9; mm=0; //每一次循环过后d,b,m应该都赋予原值,这样才能继续下一次循环 printf("请输入需要查找的数:"); scanf("%d",&n); while(b<=d) //二分法实现判断 { c=(b+d)/2; if(n==a[c]) { mm=1; break; } if(n<c) { d=c-1; } else { b=c+1; } } if(mm==1) { printf("%d该数存于数组中\n",a[c]); } else { printf("%d该数不存在数组中\n",n); } } return 0; } ``` 最后修改:2021 年 05 月 03 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果文章有用,请随意打赏。