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

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...

Open a Lenovo 3000 G410 Battery

One of the common problems with laptops is the deteriorating performance of its battery. Laptop batteries are made up of Lithium Ion (Li-ion). I have a laptop that is more than a year old. Last week, its battery went totally dead. I'm still looking for a replacement. I'm very careful in finding one because most cheap alternatives are poor in performance (with only 45 mins up time compared to the original 3-4 hours). Some are overly priced. I now have a prospect seller and will be purchasing after this post. Well, to continue, out of my curiosity, I opened the battery. The laptop is a Lenovo 3000 G410. Before my exploration, I took the specifications of the battery. It turned out that it's manufactured by SANYO. Here are the specifications: Battery name: PABAS024 Unique ID: 3658QSANYO PABAS024 Chemistry: LION I really don't have any knowledge about the hardware. All I know is that it can be charged and discharged. Despite my limited knowledge, I still opened it up ...