Linear Search Visualizer using PyQt5


Understanding data structures and algorithms is essential for any prospective programmer because they are the foundation of computer science. This knowledge can be considerably aided by visualising these ideas. This post will demonstrate how to use Python's PyQt5 to develop a linear search visualizer. To gain a deeper understanding, we will go in-depth with developing a PyQt5 application and animating the linear search method.

Introduction to PyQt5

A complete set of Python bindings for Qt libraries called PyQt5 makes it possible to build complex and feature-rich GUI applications. PyQt5 is extremely adaptable and works with a variety of operating systems.

Understanding Linear Search

A straightforward approach for finding a specific member in a list or array is linear search. It starts looking for the target element at the beginning of the array and keeps looking until it finds the element or reaches the end of the array.

Getting Started with PyQt5

Make sure PyQt5 is set up in your Python environment first.

pip install pyqt5

Let's now explore some instances of how to create a linear search visualizer.

Example 1: Setting Up The Window

We'll begin by using PyQt5 to create a straightforward window. An application with a window labelled "Linear Search Visualizer" will be created by the code below.

from PyQt5 import QtWidgets

class LinearSearchVisualizer(QtWidgets.QWidget):
   def __init__(self):
      super().__init__()

      # Set window properties
      self.setWindowTitle('Linear Search Visualizer')

# Create an instance of the application
app = QtWidgets.QApplication([])

# Create an instance of the LinearSearchVisualizer
visualizer = LinearSearchVisualizer()

# Show the visualizer
visualizer.show()

# Run the application
app.exec_()

Example 2: Creating Array Representation

Rectangles will be used to illustrate an array in this example. Each rectangle's height will indicate the number it stands for.

from PyQt5 import QtGui, QtCore
#... existing code

class LinearSearchVisualizer(QtWidgets.QWidget):
   def __init__(self):
      #... existing code

      # Initialize an array
      self.array = [50, 70, 30, 90, 60, 10, 40, 20, 80]

   def paintEvent(self, event):
      qp = QtGui.QPainter()
      qp.begin(self)

      # Draw array
      for i in range(len(self.array)):
         qp.drawRect(10 + i * 20, 200, 20, -2 * self.array[i])

      qp.end()

Example 3: Animating Linear Search

We'll illustrate the linear search procedure in this example. The rectangle that represents the currently checked element will have its colour changed.

#... existing code

class LinearSearchVisualizer(QtWidgets.QWidget):
   def __init__(self):
      #... existing code

      # Initialize search parameters
      self.target = 60
      self.current_index = 0
      self.timer = QtCore.QTimer()
      self.timer.timeout.connect(self.advance_search)
      self.timer.start(1000)

   def paintEvent(self, event):
      #... existing code

      # Highlight current element
      qp.setBrush(QtGui.QColor(255, 0, 0))
      qp.drawRect(10 + self.current_index * 20, 200, 20, -2 * self.array[self.current_index])

      def advance_search(self):
      # Check if current element matches target
      if self.array[self.current_index] == self.target:
         self.timer.stop()
      else:
         self.current_index += 1

      # Trigger a repaint
      self.update()

This code adds a QTimer that starts the advance_search method by sending out a signal every 1000 milliseconds. We determine whether the current element matches the target in this technique. The timer is stopped if it does. If not, we move on to the next element and cause the window to be painted again. Now that the rectangle has been repainted, it will be red, symbolising the advancement of the search.

You may see the Linear Search Algorithm in action and have a better grasp of how it functions by running these examples. The main advantage of this strategy is that it facilitates a more thorough comprehension of the algorithm's step-by-step execution.

Conclusion

In this article, we demonstrated how to use Python's PyQt5 to create a linear search visualizer. A window's configuration, an array's representation, and how to animation the linear search process were all shown using the examples provided. The Linear Search Visualizer is evidence that using the PyQt5 library makes it easier to visualise data structures and algorithms. We sincerely hope that this tutorial will be useful to you as you learn about data structures and algorithms. You'll soon be producing more complicated visualisations with ease if you keep practising and explore all of PyQt5's features.

Updated on: 18-Jul-2023

71 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements