Responsive Ads Here

Monday, 18 April 2016

Linier search menggunakan Radix sort


Dalam kehidupan sehari-hari sebenarnya kita sering melakukan pencarian data. Sebagai contoh, jika kita menggunakan Kamus untuk mencari kata-kata dalam Bahasa Inggris yang belum diketahui terjemahannya dalam Bahasa Indonesia. Contoh lain saat kita menggunakan buku telepon untuk mencari nomor telepon teman atau kenalan dan masih banyak contoh yang lain. Pencarian data sering juga disebut table look-up atau storage and retrieval information adalah suatu proses untuk mengumpulkan sejumlah informasi di dalam pengingat komputer dan kemudian mencari kembali informasi yang diperlukan secepat mungkin.Algoritma pencarian (searching algorithm) adalah algoritma yang menerima sebuah argumen kunci dan dengan langkah-langkah tertentu akan mencari rekaman dengan kunci tersebut. Setelah proses pencarian dilaksanakan, akan diperoleh salah satu dari dua kemungkinan, yaitu data yang dicari ditemukan (successful) atau tidak ditemukan (unsuccessful).

berikut codding Linier Search dalam C#(C-Sharp):


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            char pilihan;
            Console.Write("Masukkan banyak data = ");
            int max = int.Parse(Console.ReadLine());
            int[] array = new int[max];
            for (int i = 0; i < max; i++)
            {
                Console.Write("Data " + i + " = ");
                array[i] = int.Parse(Console.ReadLine());
            }
            do
            {
                Console.Write("Masukkan data yang anda cari = ");
                int search = int.Parse(Console.ReadLine());
                RadixSort(array);
                bool flag = BinarySearch(array, 0, (max - 1), search);
                if (flag == true)
                {
                    Console.WriteLine("Data ditemukan");
                }
                else
                {
                    Console.WriteLine("Data tidak ditemukan");
                }
                Console.Write("Ulangi Y/T = ");
                pilihan = char.Parse(Console.ReadLine());
            } while (pilihan == 'Y');

        }

        public static int[] RadixSort(int[] arrayay)
        {
            bool isFinished = false;
            int digitPosition = 0;

            List<Queue<int>> buckets = new List<Queue<int>>();
            InitializeBuckets(buckets);

            while (!isFinished)
            {
                isFinished = true;

                foreach (int value in arrayay)
                {
                    int bucketNumber = GetBucketNumber(value, digitPosition);
                    if (bucketNumber > 0)
                    {
                        isFinished = false;
                    }

                    buckets[bucketNumber].Enqueue(value);
                }

                int i = 0;
                foreach (Queue<int> bucket in buckets)
                {
                    while (bucket.Count > 0)
                    {
                        arrayay[i] = bucket.Dequeue();
                        i++;
                    }
                }

                digitPosition++;
            }

            return arrayay;
        }

        private static int GetBucketNumber(int value, int digitPosition)
        {
            int bucketNumber = (value / (int)Math.Pow(10, digitPosition)) % 10;
            return bucketNumber;
        }

        private static void InitializeBuckets(List<Queue<int>> buckets)
        {
            for (int i = 0; i < 10; i++)
            {
                Queue<int> q = new Queue<int>();
                buckets.Add(q);
            }
        }



        static bool BinarySearch(int[] array, int lowBound, int highBound, int value)
        {
            int mid;
            while (lowBound <= highBound)
            {
                mid = (lowBound + highBound) / 2;
                if (array[mid] < value)
                {
                    lowBound = mid + 1;
                    continue;
                }
                else if (array[mid] > value)
                {
                    highBound = mid - 1;
                    continue;
                }
                else
                {
                    return true;
                }
            }
            return false;
        }
    }
}

Ini Hasil running programnya



sekian postingan saya tentang Linier Search menggunakan Radix sort

semoga bermanfaat..

jangan lupa comment



No comments:

Post a Comment

Komentar

About me

Recent Posts

3/recentposts

Tags

Comments

3/recentcomments
[recent]

Recent

3/recentposts

Paling Dilihat