码迷,mamicode.com
首页 > 编程语言 > 详细

C语言数组之冒泡排序+折半查找法(二分查找)

时间:2017-05-12 16:34:44      阅读:485      评论:0      收藏:0      [点我收藏+]

标签:排序算法   i++   标记   div   arc   middle   记录   下标   bsp   

 

冒泡排序算法

技术分享

 1 int num[5];
 2     int i;
 3     //循环接收用户输入的元素 
 4     for(i=0;i<5;i++){
 5         printf("请输入第%d个元素\n",i+1);
 6         scanf("%d",&num[i]);
 7     }
 8     for(i=0;i<4;i++){    //外层循环,控制排序的轮数 
 9         int j; 
10         for(j=0;j<4-i;j++){        //内层循环,控制冒牌排序每轮的次数 
11             if(num[j]>num[j+1]){    //判断判断元素和后一个元素大小,如果前面元素大,则交换位置 
12                 int temp;
13                 temp=num[j];
14                 num[j]=num[j+1];
15                 num[j+1]=temp;
16             }
17         }
18     }
19     //遍历打印数组
20     for(i=0;i<5;i++){
21         printf("%d\t",num[i]);
22     }

 

二分查找法(折半查找,前提是必须是有序数组)

 

 1 int num[10]={1,2,3,4,5,6,7,8,9,10};
 2     int search;
 3     printf("请输入你要查找的元素\n");
 4     scanf("%d",&search);
 5     int middle;//中间位置 
 6     int left=0;//起始下标,默认第一个元素的下标 
 7     int right=9;//结束下标,默认最后一个元素的下标
 8     int count=0;//用了记录查询次数
 9     int flag=0;//标记,判断是否有该元素;
10     while(left<=right){
11         count++;
12         middle=(left+right)/2;
13         if(search>num[middle]){//待查找的元素必中间位置元素的值大,到右边查找,更改起始位置 
14             left=middle+1;
15         }else if(search<num[middle]){//待查找的元素必中间位置元素的值小,到左边查找,更改结束位置 
16             right=middle-1;
17         }else{
18             printf("你要查找的要素%d下标为%d",search,middle);
19             flag=1;
20             break;
21         }
22     }
23     if(flag==1){
24         printf("你一共用了%d次查找到该元素\n",count);
25     }else{
26         printf("你要查找的元素不存在\n");
27     }

 

C语言数组之冒泡排序+折半查找法(二分查找)

标签:排序算法   i++   标记   div   arc   middle   记录   下标   bsp   

原文地址:http://www.cnblogs.com/duanrantao/p/6846047.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!