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

相关推荐
疯狂的喵26 分钟前
C++编译期多态实现
开发语言·c++·算法
scx2013100431 分钟前
20260129LCA总结
算法·深度优先·图论
2301_7657031436 分钟前
C++中的协程编程
开发语言·c++·算法
m0_7487080537 分钟前
实时数据压缩库
开发语言·c++·算法
小魏每天都学习1 小时前
【算法——c/c++]
c语言·c++·算法
智码未来学堂1 小时前
探秘 C 语言算法之枚举:解锁解题新思路
c语言·数据结构·算法
Halo_tjn2 小时前
基于封装的专项 知识点
java·前端·python·算法
春日见2 小时前
如何避免代码冲突,拉取分支
linux·人工智能·算法·机器学习·自动驾驶
副露のmagic2 小时前
更弱智的算法学习 day59
算法
u0109272713 小时前
C++中的RAII技术深入
开发语言·c++·算法