Skip to main content

A review on Searching Algorithms

Philnits sure is useful. The review reminded me of Searching 101 from which I only remember the Linear Search algorithm. Linear search is a method of searching in sequential order. Given the following values:

A = {4, 20, 31, 50, 23, 11, 30}
index 1 2 3 4 5 6 7

Searching is performed in sequential order which means if we are looking for the number 50, we start comparing it from values of index 1 until we reach the search item.

Another sorting algorithm is the Binary Search which is very useful when the elements are already sorted. Given the following values:

A = {1, 12, 30, 34 ,50 ,56, 67, 78, 89}
index 1 2 3 4 5 6 7 8 9

We would like to look for the number 67,

We first get the median value:
M = (1+9)/2 = 5
A[5] = 50
We disregard the lower half because 50<67.

The lower bound now becomes M+1.
L = M+1 = 5 +1 = 6

The new median now becomes M = (Lower bound + Upper bound)/2
M = (6 + 9) / 2 = 7.5
We round this off so it becomes 8.
A[8] = 78
78>67 so we disregard the upper half.
Since we disregarded the upper half, the new search range would now be from index 6 up to 8. Unlike earlier where we disregarded the lower part, we immediately took the value to the right of the median as the lower bound (L = M+1). This time however, since we disregarded the upper bound, we now get the upper bound instead of the lower bound: U = M-1.
U = 8-1 = 7
Since we already finished comparing with the lower bound 6, and there is no other index to compare, we compare with the upper bound 7.
A[7] = 67?
A[7] = 67 = 67

We now have the answer.


Comments

Popular posts from this blog

How to register a business name

Attending business summits and conferences is a big help to those who belong to the quite "techy" (technological or technical) industry. Being a graduate of one, I had less knowledge in the field of entrepreneurship. Enrolling myself in business administration gave me quite the knowledge to be a part of the business world and thus improve my entrepreneurial skills. I now would like to share this information that I got familiar with (and I managed to get a copy of the entire process from the 6th Mindanao ICT Congress): How to Register a Business Name (in the Philippines) ----------------------------------------------------------------------------------------------- SINGLE PROPRIETORSHIP Applicant must secure 2 copies of registration form and pay Php 300.00 (rate may change) for single proprietorship registration processing fee. The registration shall be valid for five (5) years. A surcharge of Php 100.00 is imposed if renewal is filed beyond the three (3) month grace period, c...

Adding a Footer to the DataGridView component

I have been searching for sites and forums that would give me a any hint on having a footer on the .net DataGridView control. It was frustrating. I found some, but not what I was looking for. I use windows forms. It would have been easier if I was into web. I decided to create one for myself. It's not complete, but it works with me. It needs improvement and I hope that some programmers who might pass through this blog will help me with it :D. Limitations: Cannot set Footer values during design time. Can sometimes hide a row when scrolled to the last item in the grid. What I did was just create a user control that inherits the DataGridView control and add a StatusStrip to act as the footer. public partial class MyDataGridView : DataGridView { public StatusStrip Footer { get { return (StatusStrip)this.Controls["Footer"]; } } private bool _footerVisible; [Browsable(false)] /// /// Sets or Gets the va...

Using Crystal Reports 10 with C#.net and Firebird

C# express doesn't include a report designer or viewer. Reports however, is very much needed when creating a business software. Since C# express doesn't include a report designer, we need to find other means. One is to use a free report such as MyNeoReport. This however may not work under many circumstances. The other alternative would be to use a proven report engine and designer-Crystal Report. Crystal Report has been used by many developers (in our city). However, using a free programming language and IDE, and a free database is very limiting. Not much information can be gathered on the net either (with regards to reporting as of this writing). Here's a way to use Crystal Reports using Firebird database and C# Express as software development IDE: Pre-requisites: C# Express 2005 EMS SQL Manager 2005 for InterBase & Firebird Lite Crystal Reports 10 Create the following database: Name: TestDB1 Tables: TESTTABLE1 Columns:  ID - PK, INTEGER,AUTOINCREMENT DES...