首页 > 其他分享 >C语言学习 --- 冒泡排序与二分查找

C语言学习 --- 冒泡排序与二分查找

时间:2024-08-16 19:23:37浏览次数:7  
标签:high int mid 冒泡排序 C语言 --- 查找 low 数据

冒泡排序

  排序

        从小到大顺序排

  轮数 

         数据个数-1

  每一次比较的次数

           数据个数 - 1 - 当前的轮数

           每次比较开始从下标为0的地方开始比较

        

轮数:0 ~ < 数据个数 - 1

次数:0 ~ < 数据个数 - 1 - 当前的轮数

代码思路

1、定义数组 --- 一维数组

2、求数组中数据的个数

3、轮数:        数据个数 - 1

4、

for()
{
    for()
    {
        如果 前面的数据 > 后面的数据
        {
            交换
        }
    }
}

5、将排序后的数据统一输出验证       

代码:

#include <stdio.h>  
  
int main() {  
    int a[] = {100, 46, 482, 334, 786};  
    int len = sizeof(a) / sizeof(a[0]); // 数据个数  
    int i, j;  
    int temp;  
  
    printf("通过冒泡排序后,数组内的值排序为(降序):");  
  
    // 冒泡排序(降序)  //要是想从小到大,只用将 a[j] < a[j + 1]改为大于号就行 
    for (i = 0; i < len - 1; i++) 
    {  
        for (j = 0; j < len - 1 - i; j++) // 注意这里要减去i,因为每轮过后,最大的元素会被放在正确的位置 
        {  
            if (a[j] < a[j + 1]) // 保持这个条件以进行降序排序  
            { 
                temp = a[j];  
                a[j] = a[j + 1];  
                a[j + 1] = temp;  
            }  
        }   
    }  
  
    // 排序完成后,打印数组  
    for (i = 0; i < len; i++)
    {  
        printf("%d ", a[i]);  
    }  
    printf("\n");  
  
    return 0;  
}

二分查找

什么是查找算法

        在有序的数组内进行查找

什么是二分查找

        在有序的数组里面折半查找某一个目标数据

代码思路

#include <stdio.h>

int main(void)
{
	// 有序的数组
	// 目标数据
	
	// 定义 low	high  mid
	// low = 0  high = sizeof(数组名) / sizeof(数组名[0]) - 1
	
	// 如果 low <= high
		// mid = (low + high) / 2;
		
		// 数组名[mid]     目标数据对比
		
		// 数组名[mid] > 目标数据 --- 要查找的数据在左边 --> high = mid - 1
		// 数组名[mid] < 目标数据 --- 要查找的数据在右边 --> low = mid + 1
		// 数组名[mid] == 目标数据 --- 找到数据则结束查找,打印mid
		
	// 如果 low > high --> 结束查找,输出没有该数据
	
	 
	return 0;
}

代码:

#include<stdio.h>

int main(void)
{
    int arr[] = {2,3,8,9,12,18,35,40};
    
    int n = 40;
    
    int low,high,mid;  // 下标
    
    low = 0;
    high = sizeof(arr) / sizeof(arr[0]) - 1;
    
    while(1)
    {		
        if(low <= high)
        {
            mid = (low+high) / 2;
            
            if(arr[mid] > n)
            {
                high = mid - 1;
            }
            else if(arr[mid] < n)
            {
                low = mid + 1;
            }
            else if(arr[mid] == n)
            {
                printf("找到了,%d",mid);
                break;
            }
        }
        else
        {
            printf("找不到");
            break;	
        }		
    } 				
     
    return 0;
}

标签:high,int,mid,冒泡排序,C语言,---,查找,low,数据
From: https://blog.csdn.net/weixin_60945116/article/details/141267442

相关文章

  • 博客园-awescnb插件-geek皮肤优化
    简介本文介绍博客园在使用awescnb插件中的geek皮肤时的一些相关优化,主要涉及博客园统计(blogStats)展示及自定义日历隐藏。皮肤安装博客园自定义皮肤工具推荐:awescnb博客效果优化1.隐藏右上角自定义日志展示直接通过更改css样式隐藏具体操作:博客园->管理->设置->......
  • python-flask计算机毕业设计网上办公系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,互联网已成为现代社会不可或缺的基础设施,深刻影响着各行各业的工作模式与效率。在企业管理领域,传统的办公方式逐渐......
  • python-flask计算机毕业设计中医院信息管理系统(程序+开题+论文)
    文件加密系统的设计与实现tp835本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着中医药事业的蓬勃发展,中医院作为传承与发展中医药文化的重要载体,其日常运营管理的复杂性和高效性需求......
  • failed to solve: process “/bin/sh -c yum -y install vim“ did not complete succ
    网上有好多种方法(都试过了只有方法四可以用):方法一:systemctl restart  docker(生产上不建议)方法二:看看你的网络是否有问题,检查一下网络连通性方法三:有可能是容器版本的问题,推荐使用centos7,看网上说最新的镜像会有这类的的问题方法四:就像这个博主大佬说的修改主机源修改......
  • 统计学(贾俊平)学习笔记--第二章
    本章主要讲解了数据来源、调查方法、试验方法,以及数据抽样误差、非抽样误差,误差产生的原因等内容。该章内容较简单,不在仔细分析。这些也是数据来源的方法,大家可以了解。抽样误差(samplingerror)是由抽样的随机性引起的样本结果与总体真值之间的差异。影响抽样误差大小的因素......
  • YOLOv8改进:独家创新篇 - 给YOLOv8增加辅助可逆分支结构(PGI,1:1改进)
    鱼弦:公众号【红尘灯塔】,CSDN博客专家、内容合伙人、新星导师、全栈领域优质创作者、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen)YOLOv8改进:独家创新篇-给YOLOv8增加辅助可逆分支结构(PGI,1:1改进)简介YOL......
  • XSS-跨站脚本攻击
    目录一、xss漏洞的定义1.1xss的介绍1.2XSS类型1.3XSS分类详解1.4 xss攻击原理二、xss的危害三、xss的攻击流程1.反射型xss2.存储型xss四、xss的防御手段一、xss漏洞的定义1.1xss的介绍跨站脚本攻击(CrossSiteScripting),为了不和层叠样式表(CascadingSt......
  • [Paper Reading] Single-to-Dual-View Adaptation for Egocentric 3D Hand Pose Estim
    名称Single-to-Dual-ViewAdaptationforEgocentric3DHandPoseEstimation时间:CVPR2024机构:TheUniversityofTokyoTL;DR多目3Dhandposeestimation数据比较难标注,作者核心思路是先训练单目模型,利用无监督的方法适配到双目场景,好处是a.无需标多目数据;b.可以适应任何......
  • KubeSphere 社区双周报| 2024.08.02-08.15
    KubeSphere社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过commit的贡献者,并对近期重要的PR进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。本次双周报涵盖时间为:2024.08.02-08.15。贡献者名单新晋KubeSpherecontribu......
  • 2、zabbix-服务端(监控端)的部署--只负责监控
    1、访问zabbix官网:https://www.zabbix.com/cn/download?zabbix=5.0&os_distribution=red_hat_enterprise_linux&os_version=7&components=server_frontend_agent&db=mysql&ws=apache可以选择按照官网提供的步骤来安装  =================================================......