二分查找
给定一个有序数列,查找指定的数值在第几位
- 注意整个循环体的条件是用low<=high来判断的,以及low=mid+1,若最后low>high 都没查到 跳不出循环 就说明不存在
- 注意n==a[mid] n等于的是在mid位置的存的值 不是mid哦
- 最后算多少位的时候mid要+1 因为mid是与a[N]一样是从0开始算的
#include#define N 10 int main() { int a[N]={11,12,13,14,15,16,17,18,19,20}; int high,mid,low,n; high=N-1; low=0; scanf("%d",&n); while(low<=high) { mid=(low+high)/2; if(n==a[mid]) break; else if(n 冒泡排序
- 两个for叠加循环那里是精髓 相邻两个数比较 排序 最后那个数就用j
#include#define N 10 int main() { int i,j,a[N],turn; for(i=0;i 插入排序算法
- 算法的精髓在于while部分,while部分的j-- 就是依次降级 后面自减后的j+1就相当于j(大概意思是这样的)
- 重点就是从第二项开始,依次取一项向前比较大小 比完就放好 循环
#include#define N 6 int main() { int i,j,a[N],turn; for(i=0;i =0&&turn



