C语言——利用二分法求数组中特定元素的索引,并在函数中引入了冒泡排序,可以求无序数组中的特定元素的索引

#include <stdio.h>

#include <stdlib.h>

int erfenfa(int *p, int len, int target)

{

int left = 0;

int right = len - 1;

int i;

int j;

int tmp;

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

{

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

{

if (p[j] > p[j + 1])

{

tmp = p[j];

p[j] = p[j + 1];

p[j + 1] = tmp;

}

}

}

while (left <= right)

{

int mid = (left + right) / 2;

if (p[mid] == target)

{

return mid;

}

else if (p[mid] < target)

{

left = mid + 1;

}

else if (p[mid] > target)

{

right = mid - 1;

}

}

return left;

}

int main()

{

int len;

int target;

int k;

scanf_s("%d", &len);

scanf_s("%d", &target);

int* p = (int*)malloc(sizeof(int) * len);

if (p == NULL)

{

return 1;

}

else

{

for (k = 0; k < len; k++)

{

scanf_s("%d", p + k);

}

int index = erfenfa(p, len, target);

printf("%d", index);

free(p);

}

return 0;

}

结果

数组中有四个元素,找到元素5的索引,输入数组中的元素排列没有顺序。

相关推荐
Sheep Shaun1 分钟前
如何让一个进程诞生、工作、终止并等待回收?——探索Linux进程控制与Shell的诞生
linux·服务器·数据结构·c++·算法·shell·进程控制
Pluchon2 分钟前
硅基计划4.0 简单模拟实现AVL树&红黑树
java·数据结构·算法
生锈的键盘11 分钟前
推荐算法实践:交叉特征的理解
算法
小龙报17 分钟前
【51单片机】从 0 到 1 玩转 51 蜂鸣器:分清有源无源,轻松驱动它奏响新年旋律
c语言·数据结构·c++·stm32·单片机·嵌入式硬件·51单片机
小武编程20 分钟前
基于JL700N可视化SDK的MAC地址应用
c语言·tws耳机·杰理jl700n
dllxhcjla21 分钟前
数据结构和算法
数据结构
乌萨奇也要立志学C++24 分钟前
【洛谷】BFS 求解最短路:从马的遍历到迷宫问题的实战解析
算法·宽度优先
老鼠只爱大米33 分钟前
LeetCode经典算法面试题 #46:全排列(回溯、交换、剪枝等五种实现方案详细解析)
算法·leetcode·剪枝·回溯·全排列·stj算法
Dovis(誓平步青云)1 小时前
《滑动窗口算法:从 “暴力遍历” 到 “线性高效” 的思维跃迁》
运维·服务器·数据库·算法
_OP_CHEN1 小时前
【算法基础篇】(五十七)线性代数之矩阵乘法从入门到实战:手撕模板 + 真题详解
线性代数·算法·矩阵·蓝桥杯·c/c++·矩阵乘法·acm/icpc