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

相关推荐
厂太_STAB_丝针34 分钟前
【自学嵌入式(8)天气时钟:天气模块开发、主函数编写】
c语言·单片机·嵌入式硬件
利刃大大2 小时前
【回溯+剪枝】找出所有子集的异或总和再求和 && 全排列Ⅱ
c++·算法·深度优先·剪枝
charlie1145141912 小时前
从0开始使用面对对象C语言搭建一个基于OLED的图形显示框架(协议层封装)
c语言·驱动开发·单片机·学习·教程·oled
*TQK*2 小时前
ZZNUOJ(C/C++)基础练习1041——1050(详解版)
c语言·c++·编程知识点
Rachela_z3 小时前
代码随想录算法训练营第十四天| 二叉树2
数据结构·算法
细嗅蔷薇@3 小时前
迪杰斯特拉(Dijkstra)算法
数据结构·算法
追求源于热爱!3 小时前
记5(一元逻辑回归+线性分类器+多元逻辑回归
算法·机器学习·逻辑回归
ElseWhereR3 小时前
C++ 写一个简单的加减法计算器
开发语言·c++·算法
Smark.3 小时前
Gurobi基础语法之 addConstr, addConstrs, addQConstr, addMQConstr
算法
*TQK*3 小时前
ZZNUOJ(C/C++)基础练习1031——1040(详解版)
c语言·c++·编程知识点