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的索引,输入数组中的元素排列没有顺序。

相关推荐
明月看潮生27 分钟前
青少年编程与数学 02-019 Rust 编程基础 09课题、流程控制
开发语言·算法·青少年编程·rust·编程与数学
oioihoii34 分钟前
C++23 views::slide (P2442R1) 深入解析
linux·算法·c++23
yuhao__z1 小时前
代码随想录算法训练营第六十三天| 图论9—卡码网47. 参加科学大会,94. 城市间货物运输 I
算法·图论
June`1 小时前
专题三:穷举vs暴搜vs深搜vs回溯vs剪枝(全排列)决策树与递归实现详解
c++·算法·深度优先·剪枝
vlln2 小时前
适应性神经树:当深度学习遇上决策树的“生长法则”
人工智能·深度学习·算法·决策树·机器学习
我叫珂蛋儿吖2 小时前
[redis进阶六]详解redis作为缓存&&分布式锁
运维·c语言·数据库·c++·redis·分布式·缓存
与己斗其乐无穷2 小时前
数据结构(2)线性表-顺序表
数据结构
冲帕Chompa2 小时前
图论part09dijkstra算法
算法·图论
·云扬·3 小时前
【PmHub后端篇】PmHub中基于Redis加Lua脚本的计数器算法限流实现
redis·算法·lua
周Echo周3 小时前
20、map和set、unordered_map、un_ordered_set的复现
c语言·开发语言·数据结构·c++·算法·leetcode·list