• Skip to main content
  • Skip to primary sidebar
  • Skip to secondary sidebar
  • Skip to footer

Computer Notes

Library
    • Computer Fundamental
    • Computer Memory
    • DBMS Tutorial
    • Operating System
    • Computer Networking
    • C Programming
    • C++ Programming
    • Java Programming
    • C# Programming
    • SQL Tutorial
    • Management Tutorial
    • Computer Graphics
    • Compiler Design
    • Style Sheet
    • JavaScript Tutorial
    • Html Tutorial
    • Wordpress Tutorial
    • Python Tutorial
    • PHP Tutorial
    • JSP Tutorial
    • AngularJS Tutorial
    • Data Structures
    • E Commerce Tutorial
    • Visual Basic
    • Structs2 Tutorial
    • Digital Electronics
    • Internet Terms
    • Servlet Tutorial
    • Software Engineering
    • Interviews Questions
    • Basic Terms
    • Troubleshooting
Menu

Header Right

Home » C » Binary Search in C
Next →
← Prev

Binary Search in C

By Dinesh Thakur

In this tutorial, We will learn Binary Search in C with practical implementation. A binary search (also known as half-interval search or logarithmic search) is similar to a linear search, but It’s a technique that is faster than a linear search except for small arrays. Binary search implemented only for sorted array or list. If the array elements not sorted, we need to sort them first.

We’ll be covering the following topics in this tutorial:

  • What is Binary Search in C?
  • Binary Search Time Complexity
  • Binary Search Algorithm
  • Binary Search Program Using Iterative
  • Binary Search Program Using Recursive Method

What is Binary Search in C?

Binary Search: The binary search algorithm uses divide and conquer method. It is a search algorithm used to find an element position in the sorted array. It is useful when there is a large number of elements in an array. Binary search algorithm can be applied on sorted binary trees, sorted linear array, pointer array.

The binary search begins by comparing the searched element with the middle element of the array. Since ‘mid’ calculate for every iteration or recursion, we divide the array into half and then try to solve the problem. If the searched value is less than the element in the middle of the array, then search continued in the lower half. Otherwise, the search continued in the upper half. We were repeating this process until the element found, or there no more array element left to search.

Binary Search in CFor example: 2,5,8,12,16,23,38,56,72,91,97.

The following steps will follow to find an element 38 with a binary search in the array.

The middle element of the array is selected as 23 and compared with the searched element 38. The searched element (38) is not equal to the middle element (23), of the array, which is greater than 23, So search is continued in the upper half.

Our new search array(Upper half of array): 38,56,72,91,97.

The middle element of our new search array is 72, which is greater than searched element 38,

So, Our new search array: 38,56

And then a search is completed.

Binary Search Time Complexity

To determine the complexity of the binary search algorithm, we need to know the number of comparisons made to search the ITEM in the array A containing N elements in sorted order.

The best-case occurs if the middle element is equal to the item to search. In that case, the loop executes only 1 time, and in Big-O notation, the complexity can express as O(1).

The worst case occurs if the item we are looking for is not in the array. In that case, the number of comparisons made will be the number of times the loop iterates. On each iteration, the size of the array is reduced by half before the size of the array reaches or goes below 1 (i.e., only l item to check) as we know from algorithm complexity that whenever loop size is cut to half, then, in that case, Big-O notation is expressed as log2n. Therefore, in our case, complexity is defined as O (log2n).

In the worst-case scenario, searching an array contain 1024 elements will take only 10 comparisons (log2 I024 = 10). Similarly, an array containing 220 elements will require 20 comparisons in the worst case to locate the search item. Thus, using binary search, there is a tremendous increase in performance over linear search that requires 220 comparisons to search an item in an array containing 220 elements.

Binary Search Algorithm

Step 1 : Find the centre element of array.
         centre = first_index + last_index / 2 ;
Step 2 : If centre = element, return 'element found' and index.
Step 3 : if centre > element, call the function with last_index = centre - 1 .
Step 4 : if centre < element, call the function with first_index = centre + 1 .
Step 5 : exit.

Binary Search Program Using Iterative

Let us implement an example with binary search program,

#include <stdio.h>
int BinarySearch(int array[], int first_index, int last_index, int element){
 while (first_index <= last_index){
  int centre = first_index + (last_index - first_index )/2;
  if (array[centre] == element)
     return centre;
    if (array[centre] < element)
      first_index = centre + 1;
    else
      last_index = centre - 1;
 }
 return -1;
}
int main(void){
  int array[] = {2,5,8,12,16,23,38,56,72,91,97};
  int n = 11;
  int element = 38;
  int found_index = BinarySearch(array, 0, n-1, element);
  if(found_index == -1 ) {
    printf("Element not found in the array ");
  }
  else {
   printf("Element found at index : %d",found_index);
  }
  return 0;
}

binary search program in c

Binary Search Program Using Recursive Method

#include<stdio.h>
int BinarySearch(int array[], int first_index, int last_index, int element){
  if (last_index >= first_index){
    int centre = first_index + (last_index - first_index )/2;
    if (array[centre] == element)
       return centre;
       if (array[centre] > element)
         return BinarySearch(array, first_index, centre-1, element);
         return BinarySearch(array, centre+1, last_index, element);
  }
  return -1;
}
int main(void){
  int array[] = {2,5,8,12,16,23,38,56,72,91,97};
  int n = 11;
  int element = 38;
  int found_index = BinarySearch(array, 0, n-1, element);
  if(found_index == -1 ) {
    printf("Element not found in the array ");
  }
  else {
    printf("Element found at index : %d",found_index);
  }
  return 0;
}

binary search in c program

You’ll also like:

  1. What is Binary Search
  2. Array C++ Binary Search.
  3. Binary Search in Python
  4. C Program binary search of an array for a value
  5. C program to implement binary search
Next →
← Prev
Like/Subscribe us for latest updates     

About Dinesh Thakur
Dinesh ThakurDinesh Thakur holds an B.C.A, MCDBA, MCSD certifications. Dinesh authors the hugely popular Computer Notes blog. Where he writes how-to guides around Computer fundamental , computer software, Computer programming, and web apps.

Dinesh Thakur is a Freelance Writer who helps different clients from all over the globe. Dinesh has written over 500+ blogs, 30+ eBooks, and 10000+ Posts for all types of clients.


For any type of query or something that you think is missing, please feel free to Contact us.


Primary Sidebar

C Programming

C Programming Tutorials

  • C - History
  • C - Anatomy
  • C - Constants
  • C - Identifiers
  • C - Data Types
  • C - Libraries File
  • C - Header Files
  • C - Basic Language
  • C - Data Types Sizes
  • C - Header Files Importance
  • C - Escape Sequences
  • C - Main() Purpose
  • C - Program Procedure
  • C - Control Statements
  • C - Enumeration Constant
  • C - Add numbers
  • C - Return Statement
  • C - Avoid Goto
  • C - Command Line Arguments
  • C - Switch Case
  • C - Switch Case Limitations
  • C - getchar() and putchar()
  • C - Iteration Statements
  • C - Pass by Value and Reference
  • C - Structures and Unions
  • C - Structure
  • C - Dynamic Memory
  • C - Fgets and Fputs Functions
  • C - Gets() and Puts() Functions
  • C - Armstrong Number
  • C - Storage Classes
  • C - Fibonacci Series
  • C - Precision Setting
  • C - const Parameters

C - Variable & It's Type

  • C - Variables
  • C - Variable Lifetime
  • C - Static Variable
  • C - Register Variable
  • C - Global Variables
  • C - Auto Variables
  • C - Local Variables

C - Operator & Expressions

  • C - Operator
  • C - Boolean Operators
  • C - Bitwise Operator
  • C - Arithmetic Operators
  • C - Modulus Operator
  • C - Ternary Operator
  • C - Expressions
  • C - Arithmetic Expressions

C - Array

  • C - Arrays
  • C - Array Types
  • C - Array Characteristics
  • C - Static Arrays
  • C - Global Arrays
  • C - 3D Arrays
  • C - Dynamic Arrays
  • C - Pointer to 3D Arrays
  • C - Array Elements Hold
  • C - Arrays as Function Parameters
  • C - Accessing Matrix Elements
  • C - File Handling
  • C - Matrix Multiplication
  • C - Dynamic Memory Allocation

C - Searching & Sorting

  • C - Data Structures
  • C - Linear Search
  • C - Bubble Sort
  • C - Merge Sort
  • C - Linked List
  • C - Insertion Sort
  • C - Binary Search
  • C - Selection Sort
  • C - Quick Sort

C - Functions

  • C - Functions
  • C - Functions Advantages
  • C - Void Functions
  • C - Function Call
  • C - Default Return Value
  • C - String functions

C - Pointer

  • C - Pointers
  • C - Type Casting Of Pointers
  • C - Pointer Advantages
  • C - Pointers Initialization
  • C - Vectors and Pointers

C - Differences

  • C - C Vs C++
  • C - Formal Args. Vs Actual Args.
  • C - Keywords Vs Identifiers
  • C - Strings Vs Character Arrays
  • C - Address Vs Dereference Operator
  • C - Goto Vs longjmp
  • C - Declaring Vs Defining Variable
  • C - String Vs Array
  • C - Call by Value Vs Reference
  • C - Structure Vs Union
  • C - For Vs While loops
  • C - Compiler Vs Interpreter

C - Programs

  • C Program Standard Deviation
  • C Program Calculate Tax
  • C Program Sum Series
  • C Program Merge Arrays
  • C Program Euclid’s Algorithm
  • C Program Print Weekdays
  • C Program Sum of Digits
  • C Program Print a list
  • C Program Print Pythagorean
  • C Program Quiz program
  • C Program Display Table
  • C Program Print Comma-Separated
  • C Program Prints Prime Numbers
  • C Program for Print Integer
  • C Program Count Number
  • C Program Print Color Name
  • C Program Print Odd Numbers
  • C Program Calculate area
  • C Program for a Menu
  • C Program Add Two Vectors
  • C Program Array Addresses
  • C Program Division by Zero Error
  • C Program Compare two Dates
  • C Program Tower of Hanoi
  • C Program return 3 Numbers
  • C Program for Prime Numbers
  • C Program for Factorial
  • C Program for Palindrome

Other Links

  • C Programming - PDF Version

Footer

Basic Course

  • Computer Fundamental
  • Computer Networking
  • Operating System
  • Database System
  • Computer Graphics
  • Management System
  • Software Engineering
  • Digital Electronics
  • Electronic Commerce
  • Compiler Design
  • Troubleshooting

Programming

  • Java Programming
  • Structured Query (SQL)
  • C Programming
  • C++ Programming
  • Visual Basic
  • Data Structures
  • Struts 2
  • Java Servlet
  • C# Programming
  • Basic Terms
  • Interviews

World Wide Web

  • Internet
  • Java Script
  • HTML Language
  • Cascading Style Sheet
  • Java Server Pages
  • Wordpress
  • PHP
  • Python Tutorial
  • AngularJS
  • Troubleshooting

 About Us |  Contact Us |  FAQ

Dinesh Thakur is a Technology Columinist and founder of Computer Notes.

Copyright © 2025. All Rights Reserved.

APPLY FOR ONLINE JOB IN BIGGEST CRYPTO COMPANIES
APPLY NOW