[汇编版]二分查找法 「爱情、让人受尽委屈。」 2021-11-09 09:24 361阅读 0赞 # \[汇编版\]二分查找法 # [Binhua Liu][] [![blogicon\_011\_thumb][blogicon_011_thumb]][blogicon_011_thumb_blogicon_011_thumb] 二分查找法(Binary Search)大家都很熟悉,我就不介绍算法了,下面是我用汇编实现的二分查找法,采用的编译环境是Visual Studio2008,部署环境请参考<[用Visual Studio 2008编写Win32汇编程序][Visual Studio 2008_Win32]>。 TITLE Binary Search .386 .MODEL flat,stdcall ExitProcess PROTO, dwExitCode:DWORD .data Numbers DWORD 1,3,7,9,12,13,34,35,88,999,1011,1013 LEN DWORD ($-Numbers)/4 .code main PROC mov EBX, OFFSET Numbers mov ECX, LEN mov EDX,3 call BinarySearch main ENDP ;---------------------------------- BinarySearch PROC ;Search specific value from the array through binary search, return the index ;Receive: EBX is a pointer that point to the array, ECX is the len of array, ; EDX is the value that we try to find out ;Return: EAX is the index of the searched value ;---------------------------------- push ECX push ESI push EDI ;check parameters CMP EBX,0 JZ FAIL CMP ECX,0 JZ FAIL ;ESI will be used as the head index of the searched array, EDI will be used as the tail index of the searched array mov ESI,0 mov EDI,ECX Dec EDI ;Begin to search ;ECX will be used as the middle index, it is equal (ESI+EDI)/2; ;EAX will be used as the value that ECX point to L1: mov ECX,0 mov ECX,ESI add ECX,EDI SAR ECX,1 mov EAX,[EBX+ECX*4] CMP EAX,EDX JZ SUCCESS ;If ESI==EDI,and the search value haven't found out, go to FAIL CMP ESI,EDI JZ FAIL CMP EAX,EDX JG GREATER ;if EAX<EDX Mov ESI,ECX Inc ESI jmp L1 ;if EAX>EDX GREATER: MOV EDI,ECX Dec ESI jmp L1 SUCCESS: Mov EAX,ECX jmp FINISH FAIL: Mov EAX,-1 jmp FINISH FINISH: pop EDI pop ESI pop ECX ret BinarySearch ENDP END main ### [![blogicon\_011\_thumb][blogicon_011_thumb]][blogicon_011_thumb_blogicon_011_thumb]声明 ### 本文为Binhua Liu原创作品。本文允许复制,修改,传递,但不允许用于商业用途。转载请注明出处。本文发表于2010年7月14日。 转载于:https://www.cnblogs.com/Binhua-Liu/archive/2010/07/14/1777084.html [Binhua Liu]: http://www.cnblogs.com/Binhua-Liu [blogicon_011_thumb]: https://images.cnblogs.com/cnblogs_com/Binhua-Liu/WindowsLiveWriter/f2690175a806_9B8B/blogicon_011_thumb_thumb.png [blogicon_011_thumb_blogicon_011_thumb]: /images/20211109/a0d171de17c8463e814a9db9af375338.png [Visual Studio 2008_Win32]: http://www.cnblogs.com/Binhua-Liu/archive/2010/07/13/1776852.html
相关 二分查找法 前提是在已经排好序的数组中,通过将待查找的元素与中间的索引值对应的元素进行比较,若大于中间索引值对应的元素,去右半部分查找,否则,去左半部分查找。以此类推,直到找到为止;找不到 野性酷女/ 2024年01月01日 06:49/ 0 赞/ 408 阅读
相关 二分查找法 理解二分查找 二分查找,在一组有序数中查找你想要的找到的数值。比如在数组arr\[10\] = \{1,2,3,4,5,6,7,8,9,10\},中查找一个数字7。 电玩女神/ 2023年10月08日 14:16/ 0 赞/ 159 阅读
相关 二分查找法 概述:二分查找法又称折半查找法,是一种效率较高的查找方式,但,二分查找法要求数组必须采用顺序存储结构有序排列。 下面是相关代码: public class Demo 你的名字/ 2023年10月03日 11:19/ 0 赞/ 28 阅读
相关 二分查找法 想使用二分查找法,前提是这个数列需要是有序的 template<typename T> int binarySearch(T arr[],int n, T t 柔光的暖阳◎/ 2022年10月21日 03:49/ 0 赞/ 256 阅读
相关 二分查找法 算法描述 折半的思想去定位要查找的元素 步骤: 1. 前提:有已排序数组 A(假设已经做好) 2. 定义左边界 L、右边界 R,确定搜索范围,循环执行二分查找(3、 红太狼/ 2022年09月14日 09:58/ 0 赞/ 286 阅读
相关 二分查找法 package com.wdl.day07; / @创建人 wdl @创建时间 2021/8/9 @描述 / public class 小鱼儿/ 2022年09月04日 01:45/ 0 赞/ 124 阅读
相关 C语言版二分查找法分析 二分查找法:也称折半查找,它是一种效率较高的查找方法。但是查询的要求为:线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 大致思路:首先,假设表中元素是按升序排列, 痛定思痛。/ 2022年05月29日 05:38/ 0 赞/ 247 阅读
相关 二分查找法 二分查找法,所需查找次数最高为logn,以2为底 def binary_search(list, item): low and high keep tr 心已赠人/ 2022年05月18日 00:41/ 0 赞/ 301 阅读
相关 二分查找法 最基本的二分查找法、不考虑数组有重复数据、匹配到返回具体元素、没有返回-1 public class TestBinary { public int 淡淡的烟草味﹌/ 2022年02月27日 09:24/ 0 赞/ 391 阅读
相关 [汇编版]二分查找法 \[汇编版\]二分查找法 [Binhua Liu][] [![blogicon\_011\_thumb][blogicon_011_thumb]][blogicon_0 「爱情、让人受尽委屈。」/ 2021年11月09日 09:24/ 0 赞/ 362 阅读
还没有评论,来说两句吧...