প্রব্লেমঃ linear search – n ইনলিমেনন্টের arr[] নামের একটি অ্যারে দেয়া আছে। x এর ভ্যালু, অ্যারের কত নাম্বার ইনডেক্সে আছে বের করতে হবে।
Input : arr[] = {10, 20, 80, 30, 60, 50,
110, 100, 130, 170}
x = 110;
Output : 6
Element x is present at index 6
Input : arr[] = {10, 20, 80, 30, 60, 50,
110, 100, 130, 170}
x = 175;
Output : -1
Element x is not present in arr[].
একদম ইজি উপায়ে …
আসলে linear search হল, অ্যারের এর প্রথম থেকে ডাটা তুলনা করা হয়। যখনি arr[i
] এর ভ্যালুর সাথে x এর ভ্যালু মিলে যাবে , তখন অ্যারের ইনডেক্স রিটার্ন করবে। if(arr[i] == x)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include <stdio.h> int search( int arr[], int n, int x) { int i; for (i = 0; i < n; i++) if (arr[i] == x) return i; return -1; } // Driver code int main( void ) { int arr[] = { 2, 3, 4, 10, 40 }; int x = 10; int n = sizeof (arr) / sizeof (arr[0]); // Function call int result = search(arr, n, x); (result == -1) ? printf ( "Element is not present in array" ) : printf ( "Element is present at index %d" , result); return 0; } |
এখানে, আমরা একটি ফাংশন লিখেছি , করে দেয়ার জন্য। search(int arr[], int n, int x) ফাংশনটি দুটি ইনপুন নিবে (একটি অ্যারে, যা খুজতে হবে সেই ভেরিয়েবল) ।
যদি সব ঠিকঠাক থাকে তাহলে আমরা অ্যারে ইনডেক্স পাব, আর না থাকলে -1 রিটার্ন করবে।
যেহেতু এখানে একটি ভ্যালুর সাথে অ্যারের সকল ভ্যালুর তুলনা করা হচ্ছে, ফলে Time Complexity বেশি হবে।
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | // C++ program for linear search #include<bits/stdc++.h> using namespace std; void search(vector< int > arr, int search_Element) { int left = 0; int length = arr.size(); int position = -1; int right = length - 1; // Run loop from 0 to right for (left = 0; left <= right;) { // If search_element is found with // left variable if (arr[left] == search_Element) { position = left; cout << "Element found in Array at " << position + 1 << " Position with " << left + 1 << " Attempt" ; break ; } // If search_element is found with // right variable if (arr[right] == search_Element) { position = right; cout << "Element found in Array at " << position + 1 << " Position with " << length - right << " Attempt" ; break ; } left++; right--; } // If element not found if (position == -1) cout << "Not found in Array with " << left << " Attempt" ; } // Driver code int main() { vector< int > arr{ 1, 2, 3, 4, 5 }; int search_element = 5; // Function call search(arr, search_element); } // This code is contributed by mayanktyagi1709 |
উপরের কোডটি সি++ এতে লেখা হয়েছে । এটি লেফট ও রাইটে দুই দিকে তুলনা করে Time Complexity কমিয়ে দিবে।
কাজ
- সবগুলি কোড দুবার করে লিখে রান কর ।
- সর্ট কর অ্যারে টি।
- Binary Search কি? লিখে গুগুল কর । আরও কিছু রেজাল্ট প্রেক্টিস কর।
নিচের লংক গুলি ফলো করো
- অ্যারে কি ( what is array in c)
- সওয়াপ ইন সি ( Swap in C)
- প্রেক্টিসের কোড সি -০১ ( practice code c language)
- টাইপ কাস্টিং কি ( What is Type Casting )
- গো-টু ইন সি ( goto in c)
- কন্টিনিউ ইন সি ( continue in c )
- ব্রেক কিওয়ার্ড সি (break keyword in c)
রেফারেন্স লিংক ওয়েবসাইট
Discussion