c语言编程实现“折半查找”的过程。

c语言编程实现“折半查找”的过程。,第1张

折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要汪厅找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。通过一次比较,将查找区间缩小一半。 折半查找是一种高效的查找方法。它可以明显减少比较次数,提高查找效率。但是,折半查找的先决条件是查找表中的数据元首陵棚素必须有序。参考程序,希望对你有所帮助者则!

#include<stdio.h>

void main()

{

int a[20],x,i,start,end

printf("input 20 numbers:\n")

for(i=0i<20i++) scanf("%d",&a[i])

printf("please enter the number:\n")

scanf("%d",&x)

for(start=0,end=19start<=end)

{

i=start+(end-start)/2

if (x==a[i])

{

printf("%d",i+1)

getch()

return

}

else if (x>a[i]) end = i-1

else start=i+1

}

}

def find(array,value):

    start,end=0,len(array)-1

   

    while start<=end:

        mid=(start+end)//2

        if a[mid][0]==value:

            return mid

      咐局  elif a[mid][0]>value:

            end=mid-1

        else:

            start=mid+1

        

    return None

if __name__=="__main__"袜差:

    array=[ ['201801', '张三'], ['201822', 'Andy Lee'], ... ,['20189X','Austin Hu'] ],省略数据请自行补充

    studentno=input("请输入指定学号")

    index=find(array,studentno)

   告简皮 if index is None:

        print("未找到学号:%s"%studentno)

    else:print(array[index])

将明氏闭这一句if(f=0)

printf("Not Found")

改为

if(start>end)

printf("Not Found")

你的程序的问题:激裂如果输入的数据不在数组中,f值也会改变,因为第一次循环的时候if、else if、else必然会执行一个核袜,而其中的每个都会改变f的值。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12431761.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存