Home PC Games Linux Windows Database Network Programming Server Mobile  
           
  Home \ Programming \ Implement binary search algorithm in C language     - Oracle EBS R12 for Linux installation (Database)

- The Java development environment to build under Ubuntu 14.04 (Linux)

- Android in the coordinate system and a method to obtain the coordinates (Programming)

- CentOS cross compiler core Raspberry Pi 2 (Linux)

- Magical Virtualbox under Ubuntu (Linux)

- Linux environment Duplex (multi-machine) automatic mutual backup scheme (Linux)

- How to use the Vault secure password storage and API key (Linux)

- Oracle user lock how to know what causes (Database)

- Inxi: Get Linux system and hardware information (Linux)

- Mac OS X systems create Ubuntu USB boot disk for the Mac (Linux)

- hadoop 2.7.1 High Availability Setup Deployment (Server)

- 11G ASM disk group does not automatically handle MOUNT (Database)

- How do you prevent other users from accessing your home directory in Linux (Linux)

- Linux landing problem (Linux)

- Oracle online redefinition (Database)

- Towards Docker (Server)

- Ubuntu Server 14.04 installation Web server (Linux + Apache + MySQL + PHP) (Server)

- Linux environment to configure Apache + Django + wsgi (Server)

- Binder began to talk about inter-process communication mechanism from Android AIDL (Programming)

- Use GLOBK batch command network adjustment (Linux)

 
         
  Implement binary search algorithm in C language
     
  Add Date : 2018-11-21      
         
         
         
  Binary search algorithm thinking is very simple, it is an ordered sequence of binary search, where I use a binary search integer array order. If implemented in C, then we need to pay attention to the following aspects:

1. How to determine the lookup is completed, the return value is defined meanings, define exit loop condition

2. How to deal with border issues, such as 123 of this sequence, when we're looking for 1 or 3, it will make the program appear BUG

3. For the number of columns, we usually use plastic storage under standard, remove the standard binary search if the intermediate numbers, what kind of problem occurs? Whether these problems will affect our search, if the problem is how to avoid?

Typically, as a beginner, I think even a binary search is too simple, not worth mentioning, the recent reflection, binary search algorithm for the requirements of the theory is not very high, but if it is put into the feasibility of the program code , then we need to think about many of the details, otherwise write the code is error-prone.

How to solve the first problem, because we understand the idea of ​​binary search is actually a binary search, to have the left margin and right margin we can determine the intermediate element, when the left edge of the right boundary coincides with the time, then find the object becomes an element, if it is not to find an object request, then look in the collection will not have the required elements. So that we clearly define the parameters needed to come out, and quit the Find conditions. We need a left border and right border, as well as the middle element, if the right margin smaller (larger than the left and right) than the left margin when the loop exits, returns an exception. If not, perform a lookup statement.

Here's how to design it to find the statement, if combined with the second and third question, we can readily write the code:

while (left <= right)
{
    mid = (left + right) / 2;
    if (x> mid)
    left = mid;
    else if (x     right = mid;
    else
    return mid;
}
return error;

Obviously doing so it is too good, according to the ideas of mathematics, this is simply not eligible borders, considering the C language will be automatically discarded plastic decimals, then the left boundary is entirely possible that we write but right boundary is never to take, if the intermediate value taken to a non-integer, it will affect other aspects of our search results, the answer is no, if discarded automatically generated status decimal, only to find only affect us in an ordered sequence of elements in a position to find the sub-segment length, and will not affect our search results, if you want to solve the border issue, we can make partial segment generated boundary shift, since the mid element has been judged too, so when we segment boundary segments can discard mid element, so that the border is mid + 1 or mid-1, and we will complete the binary search of an array of integers, codes are as follows:

#include // binary search algorithm that is the test case
int BinySerch (int * arr, int x, int lengh) // design parameters, as is the integer array, so we have to pass him
{// Array length downgrade occur when the Senate otherwise
int left = 0, right = lengh - 1;
int mid;
while (left <= right)
{
mid = left + (right - left) / 2;
if (x {
right = mid - 1;
}
else if (x> arr [mid])
{
left = mid + 1;
}
else
{
return mid;
}
}
return -1;
}
int main () // test case
{
int x = 0;
int arr [11] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int lengh = sizeof (arr) / sizeof (arr [0]);
for (int i = 0; i <12; i ++)
{
printf ( "% d", BinySerch (arr, i, lengh));
}
system ( "pause");
return 0;
}
     
         
         
         
  More:      
 
- C ++ why we chose to use the smart pointer (Programming)
- Linux installation Jetty deployment under RedHat5 8 (Linux)
- Fedora 22 Server how to upgrade to Fedora 23 Beta Server (Linux)
- CentOS build JDK environment (Linux)
- How to add and delete bookmarks in Ubuntu (Linux)
- PXE + Kickstart automatically install CentOS 6.5 (Linux)
- Several Ceph performance optimization of new methods and ideas (2015 SH Ceph Day after flu reference) (Server)
- MySQL management partition table (Database)
- Linux / CentOS 7.0 installation and configuration under Tomcat 8.0 (Server)
- Why HBase need to build SQL engine layer (Database)
- The Java Properties class action (Programming)
- Magical Virtualbox under Ubuntu (Linux)
- CoreCLR compiled in Linux CentOS (Linux)
- Using the Linux VNC service (Server)
- To use Linux to create a secure managed gateway (Linux)
- Linux Getting Started tutorial: Experience KVM Virtual Machine chapter (Linux)
- Generators and iterators in Python (Programming)
- About Java 7 module system (Programming)
- Monitor traffic Linux Shell Edition (Programming)
- Correlation Analysis: FP-Growth algorithm (Programming)
     
           
     
  CopyRight 2002-2022 newfreesoft.com, All Rights Reserved.