在前几期算法文章中,大家应该学到了一些新的算法吧。今天小编再来分享一种算法---二分法。想象一下你眼前用十个数字,分别是从1到10,如果要你一秒找出数字6,肯定觉得很简单吧,因为你的眼睛能一眼就看出来。但是如果要计算机去找数字6,它的眼睛是什么呢?计算机虽然没有眼睛,可是它有算法这个得力助手。所以当面对一大堆数据时,计算机就可以用二分法,查找想要的目标元素。
问题描述
如何从有序数列【2,4,6,12,23,26,33,34,55,57,67,68,77】找到数字6,现在我们站在计算机的角度去思考这道题。
解决方案
第一步:计算机会先找到这组有序数列的头和尾,然后从中间把数列分成两部分,也就是从33分开。第二步:它会将6与中间数字33进行比较,发现6<33,然后只需要继续锁定33的左边,直接放弃右边。第三步:寻找中间数字,也就是12。然后6与12进行比较,发现6<12,然后继续锁定12的左边。最后一步:中间数字分别是4和6,发现6=6,从而找到了目标数字。
所以二分法的步骤就是:先找出中间数字,然后目标数字与中间数字比较,如果与目标数字匹配,则直接结束。否则确定下一步的方向,然后继续重复步骤,与中间数字比较,直到找到自己目标数字。
那我们使用二分法时需要注意什么呢?1.最最最重要的是:需要查找的序列一定是有序的序列,是已经排好序的,不然就不适用。如果给你一大堆无序的数字,让你找目标数字,相信你也不容易找出来。2.如果某一次比较的过程中,发现数组为空,则无法找出目标元素。
结语
好啦,这就是今天小编想与大家分享的二分法。其实这里面还有很多奥妙,小编这不过只是冰山一角,而其中更多更有意思的部分还要读者朋友们自己去挖掘,自己发现的东西一定会更加印象深刻,更加让人激动。如果有机会,小编会与大家继续分享自己的心得体会。要是喜欢的话,请给小编点个小心心!!!