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

冒泡排序算法

 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     }
时间: 2024-11-06 10:38:24

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

对分查找法(二分查找法,折半查找法)

二分查找法是针对已经排好序的序列进行查找 每次折半查找 算法时间复杂度,对于长度为N的序列,每次执行N/2,假设k次结束,最后到第一个N/2^k=0,所以k=logN 时间复杂度logN int binarysearch(const int array[], int x, int N) { int low, mid, high; low = 0, high = N - 1; while (low <= high) { mid = (low + high) / 2; if(array[mid] <

动态数组,数组初始化,数组内存释放,向数组中添加一个元素,向数组中添加多个元素,数组打印,顺序查找,二分查找,查找数组并返回地址,冒泡排序,改变数组中某个元素的值,删除一个数值,删除所有,查找含有

 1定义接口: Num.h #ifndef_NUM_H_ #define_NUM_H_ #include<stdio.h> #include<stdlib.h> /************************************************************************/ /*数组的结构体类型                                                    */ /*******************

2. C#数据结构与算法 -- 查找算法(顺序查找,哈希查找,二分查找(折半),索引,二叉)

1. 顺序查找算法 ===================================================== 算法思想简单描述: 最突出的查找类型就是从记录集的开始处顺次遍历每条记录,直到找到所要的记录或者是 到达数据集的末尾.这就是所谓的顺序查找.顺序查找(也被称为线性查找)是非常容易实现 的.从数组的起始处开始,把每个访问到的数组元素依次和所要查找的数值进行比较.如果找 到匹配的数据项,就结束查找操作.如果遍历到数组的末尾仍没有产生匹配,那么就说明此数 值不在数组内. ==

自学Python3.6-算法 二分查找算法

自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Python3.6-算法 二分查找算法 .... 原文地址:https://www.cnblogs.com/yaoyaojcy/p/10596912.html

查找系列之简述顺序查找和二分查找

顺序查找和二分查找 一.顺序查找思想 1. 从表的一端开始扫描,顺序扫描线性表,依次扫描到的结点关键字与给定的值K相比较.如果当前扫描到的结点的关键字与给定的值K相等,则查找成功;若扫描结束后,仍未找到关键字与给定的值K相等,则查找失败; 2.顺序查找既适用于顺序存储结构,也适用于线性表的链式存储结构; 3.ASL= (n+1)/2为其平均查找长度 4.优点:算法简单,对存储结构形式没有要求 缺点:浪费空间,当长度非常大是效率低 5.算法描述: /** *顺序查找 *@param int a[]

顺序查找和二分查找

1.使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组[转] 2.顺序查找 <?php//$n为待查找的数组元素的个数,$k为待查找的元素function seq_sch($array, $n, $k){ $array[$n] = $k; for($i=0; $i<$n; $i++){ if($array[$i]==$k){ return true;break; } } if ($i<$n) //判断是否到数组的末尾{ return $i

Java中常用的查找算法——顺序查找和二分查找

Java中常用的查找算法——顺序查找和二分查找 一.顺序查找: a) 原理:顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找,找不到便一直查找下去,直到数据最后一位. b) 图例说明: 原始数据:int[] a={4,6,2,8,1,9,0,3}; 要查找数字:8 代码演示: import java.util.Scanner; /* * 顺序查找 */ public class SequelSearch { public static void main(String[] arg

看数据结构写代码(53) 静态查找表(线性查找,二分查找,斐波那契查找,插值查找)

查找定义:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录). 查找表分类:静态查找表和动态查找表. 静态查找表:只查找,而不进行插入,删除. 动态查找表:在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已经存在的某个数据元素. 静态表的 查找 大致 四种 算法: 线性查找,二分查找,斐波那契查找和插值查找. 其中 在线性查找之前,对表 无要求.对于 其余三种 需要 在查找之前 排序.插值查找 除了 需要 排序,还需要 均匀分布. 下面 给出代码: 线性查

算法-符号表的实现(顺序查找和二分查找)

符号表是一种存储键值对的数据结构,支持两种操作插入和查找,就是将一组新的键值对存入表中然后根据给定的键得到对应的值,在编程语言中常用Dictionary原理类似.符号表是一种典型的抽象数据结构,在生活之中应用的场景也很多,可以根据钥匙开门,域名解析的时候的IP地址查询,字典和图书的简介和页数,key和value是密不可分的,通过key我们可以很快找到我们需要的value. 无序链表的顺序查找 主要通过Node节点存储数据,之前的博客中有关于链表的实现,详情可参考之前的博客,代码有注释就解释太多了