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

How to cheat blog polls

Ok, I really need to post this. Many bloggers put polls on their blog sites and rely heavily on the results that they give and some even draw conclusions based on those data. The problem is that they don't check where the data those polls are generating are stored. Many polls don't even record the voter's information. Well to those of you who want to cheat polls (I mean blog polls. Some polls are really reliable), here are some points: 1. These polls don't store your IP address nor your MAC address, how then do you think are they checking for flying voters? COOKIES! 2. Now you already have an idea. Now try to vote to a blogger's poll then clear your cookies and refresh the page. You'll be able to vote again. 3. If #2 doesn't work, there's a big chance that your voting data is stored on internet temporary files. Now you know what to do. Delete those files. 4. If #3 doesn't work, then your data might have been stored elsewhere. You might want to use a ...

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