首页 > 编程语言 >常见算法

常见算法

时间:2024-08-16 09:19:14浏览次数:11  
标签:arr int 常见 flag mid len 算法 low

//基本查找,顺序查找:从0开始依次向后查找,找到返回对应索引值,未找到返回-1

#include <stdio.h>

int Order(int arr[],int len,int flag);

int main(){

int arr[5] = {1,2,3,4,5};

int len = sizeof(arr) / sizeof(int);

int flag = 5;

int i = 0;

int num = Order(arr,len,flag);

printf("%d",num > -1 ? num : -1);

}

int Order(int arr[],int len,int flag){

int i;

for(i = 0;i < len;i++){

if(flag == arr[i]){

return i;

}

}

return -1;

}

//二分查找、折半查找:数据必须有序,能提高查找效率

//设置low,high,mid表示数组索引

#include <stdio.h>

int main(){

int arr[5] = {1,2,3,4,5};

int len = sizeof(arr) / sizeof(int);

int flag = 9;

int low = 0,high = len - 1,mid = (low + high) / 2;

while(low <= high){

if(flag > arr[mid]){

low = mid + 1;

mid = (low + high) / 2;

}

else if(flag < arr[mid]){

high = mid - 1;

mid = (low + high) / 2;

}

else{

printf("%d",mid);

break;

}

}

if(low > high){

printf("-1");

}

}

//分块查找:块内无序,块见有序

//扩展分块查找

//哈希查找

//排序

//冒泡排序:

#include <stdio.h>

void BubbleSort(int arr[],int len);

int main(){

int arr[7] = {2,3,1,2,6,4,0};

int len = sizeof(arr) / sizeof(int),i;

printf("排序前:");

for(i = 0;i < len;i++){

printf("%d ",arr[i]);

}

BubbleSort(arr,len);

printf("排序后:");

for(i = 0;i < len;i++){

printf("%d ",arr[i]);

}

}

void BubbleSort(int arr[],int len){

int i = 0,j = 0,temp = 0;

for(i = 0;i < len;i++){//比较len - 1轮

for(j = 0;j < len - 1 - i;j++){//每轮比较len - 1 - i次

if(arr[j] > arr[j + 1]){

temp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = temp;

}

}

}

}

//选择排序:

void SelectSort(int arr[],int len){

int i,j;

for(i = 0;i < len - 1;i++){

int temp;

for(j = i + 1;j < len;j++){

if(arr[i] > arr[j]){

temp = arr[i];

arr[i] = arr[j];

arr[j] = temp;

}

}

}

}

标签:arr,int,常见,flag,mid,len,算法,low
From: https://www.cnblogs.com/izxw/p/18362257

相关文章

  • 「代码随想录算法训练营」第三十九天 | 动态规划 part12
    115.不同的子序列题目链接:https://leetcode.cn/problems/distinct-subsequences/文章讲解:https://programmercarl.com/0115.不同的子序列.html题目难度:困难视频讲解:https://www.bilibili.com/video/BV1fG4y1m75Q/题目状态:看题解思路:动态规划数组初始化创建一个二维动......
  • 华为OD笔试机试 - 攀登者2 (python/c++/java 2024年C卷D卷真题算法)
    华为OD机试(C卷+D卷)2024真题目录(Java&c++&python)题目描述攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。其中数组元素0代表地面。例如:[0,1,2,4,3,1,0,0,1,2,3,1,2,1,0],代表如下图所示的......
  • 混合策略改进的蜣螂算法(IDBO)优化长短期记忆神经网络原理及matlab代码
    目录0引言1数学模型2模型对比3matlab代码3.1改进的主代码3.2IDBO-LSTM4视频讲解0引言针对DBO算法全局探索能力不足、易陷入局部最优以及收敛精度不理想等问题,多为学者提出了混合多策略改进的蜣螂优化算法(IDBO)。主要混合策略改进首先是采用混沌映射结合随机反......
  • 混合策略改进的蜣螂算法(IDBO)优化支持向量机原理及matlab代码
    目录0引言1数学模型2模型对比3matlab代码3.1改进的主代码3.2IDBO-SVM4视频讲解0引言针对DBO算法全局探索能力不足、易陷入局部最优以及收敛精度不理想等问题,多为学者提出了混合多策略改进的蜣螂优化算法(IDBO)。主要混合策略改进首先是采用混沌映射结合随机反向......
  • Git零基础入门与常见命令介绍
    Git 是一个开源的分布式版本控制系统,用于高效地处理任何大小的项目。它由LinusTorvalds为了帮助管理Linux内核开发而开发的开放源码软件。与常用的版本控制工具(如CVS、Subversion)不同,Git采用了分布式版本库的方式,不需要服务器端软件支持。目录1.安装Git2.基本命令介绍2......
  • 广度优先算法 BFS总结(算法详解+模板+例题)
    一.bfs是什么广度优先搜索(Breadth-FirstSearch,简称BFS),是一种图遍历算法。它从给定的起始节点开始,逐层地向外扩展,先访问起始节点的相邻节点,然后再访问相邻节点的相邻节点,以此类推,直到遍历完所有可达节点。二.基本思路1.一直往前走,直到到达终点。2.遇到分岔路口直接分出几条......
  • 函数(子程序)的常见、易混淆概念详解【对初学者有帮助】
    C语⾔中的函数也被称做子程序,意思就是⼀个完成某项特定的任务的⼀小段代码。C语⾔标准中提供了许多库函数,点击下面的链接可以查看c语言的库函数和头文件。C/C++官⽅的链接:https://zh.cppreference.com/w/c/header目录一、函数头与函数体二、实参与形参三、return的用法事......
  • VUE DIFF算法原理
    Vue的Diff算法是虚拟DOM实现中的核心部分,它在视图更新时比较新旧虚拟DOM树并高效更新实际DOM。一、什么是Diff算法?Diff算法用于在虚拟DOM更新时,通过比较新旧两棵虚拟DOM树,找出最小差异并将这些变化应用到实际DOM上。Vue采用了一种高效的算法,只对同层级节点进......
  • KMP算法——理解 next 数组
    !注意!本文与《王道》,《严书》有所不同,字符串均从第0位开始,next数组没有添加常数1。博客为梳理思路所用,难免纰漏,希望不吝赐教。在字符串匹配中,设m为待匹配的主串S长度,n为找寻的模式串T长度。如:在主串S='ababc'中寻找模式串T='abc'则字符串匹配算法返回S中第......
  • Python实现CNN(卷积神经网络)对象检测算法
    目录1.引言2.对象检测的基本原理2.1对象检测的目标2.2常见对象检测方法2.2.1基于滑动窗口的传统方法2.2.2基于区域提议的现代方法2.2.3单阶段检测器2.3本次实现的检测方法3.代码实现3.1环境准备3.2数据准备与预处理3.3构建CNN模型3......