هي سبق بيان ڪندو بائنري ڳولا ۽ amp; Recursive Binary Search جاوا ۾ ان سان گڏ ان جي الگورتھم، عمل درآمد، ۽ جاوا بائنري سيچ ڪوڊ جا مثال:
جاوا ۾ بائنري ڳولها هڪ ٽيڪنڪ آهي جيڪا ڪنهن مجموعن ۾ ٽارگيٽ ويل يا ڪيئي ڳولڻ لاءِ استعمال ٿئي ٿي. اها هڪ ٽيڪنڪ آهي جيڪا ”ورهايو ۽ فتح ڪريو“ ٽيڪنڪ استعمال ڪري ٿي چاٻي جي ڳولا لاءِ.
جنهن تي بائنري ڳولا لاڳو ڪئي وڃي ته ڪنجي جي ڳولا لاءِ اُڀري ترتيب ۾ ترتيب ڏيڻ جي ضرورت آهي.
عام طور تي، اڪثر پروگرامنگ ٻوليون سپورٽ ڪن ٿيون لائين سرچ، بائنري سرچ، ۽ هيشنگ ٽيڪنڪ جيڪي گڏ ڪرڻ ۾ ڊيٽا ڳولڻ لاءِ استعمال ٿين ٿيون. اسان پنهنجي ايندڙ سبقن ۾ هيشنگ سکنداسون.
جاوا ۾ بائنري سرچ
لينئر سرچ هڪ بنيادي ٽيڪنڪ آهي. هن ٽيڪنڪ ۾، صف کي ترتيب سان لڪايو ويندو آهي ۽ هر عنصر کي ڪيئي سان ڀيٽيو ويندو آهي جيستائين ڪيڏي نه ملي يا صف جي پڇاڙيءَ تائين پهچي وڃي.
ليڪي ڳولا عملي ايپليڪيشنن ۾ تمام گهٽ استعمال ٿيندي آهي. بائنري ڳولها سڀ کان وڌيڪ استعمال ٿيل ٽيڪنڪ آهي ڇو ته اها لڪير واري ڳولا کان تمام تيز آهي.
جاوا بائنري ڳولا کي انجام ڏيڻ لاءِ ٽي طريقا مهيا ڪري ٿو:
- استعمال ڪندي تکراري اپروچ
- هڪ ورجائيندڙ اپروچ استعمال ڪندي
- Arrays.binarySearch () طريقو استعمال ڪندي.
هن سبق ۾، اسان انهن سڀني تي عمل ۽ بحث ڪنداسين 3 طريقا.
جاوا ۾ بائنري ڳولا لاءِ الگورتھم
بائنري ۾ڳولا جو طريقو، مجموعي کي بار بار اڌ ۾ ورهايو ويندو آهي ۽ اهم عنصر مجموعي جي کاٻي يا ساڄي اڌ ۾ ڳولهيو ويندو آهي، ان تي منحصر هوندو آهي ته ڪيئي مجموعي جي وچ واري عنصر کان گهٽ يا وڏي آهي.
هڪ سادو بائنري سرچ الگورٿم هن ريت آهي:
- ڪلڪيوٽيو ڪليڪيشن جي وچين عنصر کي.
- اهڙين شين جو وچين عنصر سان ڀيٽ ڪريو.
- جيڪڏھن ڪيئي = وچولي عنصر، ته پوءِ اسان واپس ڪريون ٿا مڊ انڊيڪس پوزيشن لاءِ مليل ڪيئي لاءِ.
- ٻي صورت ۾ جيڪڏھن ڪيئي > وچين عنصر، پوءِ ڪنجي جمع جي ساڄي اڌ ۾ آهي. اهڙيءَ طرح ورجايو قدم 1 کان 3 مجموعن جي هيٺين (ساڄي) اڌ تي.
- ٻيو ڪيئي mid عنصر، پوء ڪنجي جمع جي مٿئين اڌ ۾ آهي. ان ڪري توھان کي بائنري ڳولھا کي مٿين اڌ ۾ ورجائڻو پوندو.
جيئن توھان مٿي ڏنل قدمن مان ڏسي سگھو ٿا، بائنري سرچ ۾، مجموعي ۾ اڌ عنصرن کي صرف پھرين مقابلي کان پوءِ نظر انداز ڪيو ويو آھي.
نوٽ ڪريو ته قدمن جو ساڳيو سلسلو ٻيهر ورجائيندڙ بائنري سرچ لاءِ پڻ رکي ٿو.
اچو مثال استعمال ڪندي بائنري سرچ الگورٿم کي بيان ڪريون.
مثال طور، 10 عناصر جي ھيٺين ترتيب ڏنل صف کي وٺو.
اچو ته حساب ڪريون صفن جي وچ واري جڳھ کي.
Mid = 0+9/2 = 4
#1) Key = 21
پهريون، اسان ڪيئي قدر جو مقابلو ڪنداسين [mid] عنصر ۽ اسان اهو ڳوليندا آهيون ته عنصر جي قيمت تيmid = 21.
اهڙيءَ طرح اسان اهو ڳوليون ٿا ته ڪي = [وچ]. ان ڪري ڪيئي صف ۾ پوزيشن 4 تي ملي ٿي.
#2) ڪي = 25
16>
اسان پهريون ڀيرو چاٻي جو مقابلو ڪريون ٿا. قدر جي وچ تائين. جيئن (21 25)، اسان سڌو سنئون سر جي مٿين اڌ ۾ چاٻي ڳوليندا سين.
هاڻي ٻيهر اسان کي ڳولينداسين وچ واري مٿين اڌ لاءِ array.
Mid = 4+9/2 = 6
The value at location [mid] = 25
هاڻي اسان مکيه عنصر جي وچ واري عنصر سان ڀيٽ ڪريو. تنهن ڪري (25 == 25)، ان ڪري اسان کي مقام [mid] = 6 تي ڪيڏي ملي آهي.
اهڙيءَ طرح اسان بار بار صف کي ورهايون ٿا ۽ مکيه عنصر کي وچ سان ڀيٽڻ سان، اسان فيصلو ڪريون ٿا ته ڪهڙي اڌ ۾. چاٻي جي ڳولا ڪريو. بائنري سرچ وقت ۽ درستي جي لحاظ کان وڌيڪ ڪارائتو آهي ۽ تمام تيز پڻ آهي.
بائنري سرچ امپليمينٽيشن جاوا
مٿين الگورٿم کي استعمال ڪندي، اچو ته جاوا ۾ بائنري سرچ پروگرام لاڳو ڪريون. ورجائي طريقو. هن پروگرام ۾، اسان هڪ مثال ايري وٺون ٿا ۽ هن سري تي بائنري سرچ ڪندا آهيون.
import java.util.*; class Main{ public static void main(String args[]){ int numArray[] = {5,10,15,20,25,30,35}; System.out.println("The input array: " + Arrays.toString(numArray)); //key to be searched int key = 20; System.out.println("\nKey to be searched=" + key); //set first to first index int first = 0; //set last to last elements in array int last=numArray.length-1; //calculate mid of the array int mid = (first + last)/2; //while first and last do not overlap while( first = last ){ //if the mid key, then key to be searched is in the first half of array if ( numArray[mid] last ){ System.out.println("Element is not found!"); } } }
آئوٽ پُٽ:
ان پُٽ سري: [5, 10, 15, 20 , 25, 30, 35]
Cy to be searched=20
Element is found at index: 3
مٿي ڏنل پروگرام بائنري ڳولها جو هڪ تکراري طريقو ڏيکاري ٿو. شروعات ۾، هڪ ايري جو اعلان ڪيو ويندو آهي، پوءِ ڳولا ڪرڻ لاءِ هڪ ڪيئي بيان ڪئي ويندي آهي.
صفن جي وچ کي ڳڻڻ کان پوءِ، ڪيئي کي وچ واري عنصر سان ڀيٽيو ويندو آهي. پوء تي منحصر آهي ته ڇاچاٻي جي ڀيٽ ۾ گھٽ يا وڏي آھي، ڪيئي ترتيب جي ھيٺئين يا مٿئين اڌ ۾ ڳولهي ويندي آھي.
جاوا ۾ بار بار بائنري ڳولا
توهان بائنري ڳولا پڻ ڪري سگھو ٿا recursion ٽيڪنڪ استعمال ڪندي. هتي، بائنري ڳولها جي طريقي کي بار بار سڏيو ويندو آهي جيستائين ڪيڏي نه ملي يا پوري لسٽ ختم ٿي وڃي.
پروگرام جيڪو ريٽرسي بائنري ڳولا کي لاڳو ڪري ٿو هيٺ ڏنل آهي:
import java.util.*; class Main{ //recursive method for binary search public static int binary_Search(int intArray[], int low, int high, int key){ //if array is in order then perform binary search on the array if (high>=low){ //calculate mid int mid = low + (high - low)/2; //if key =intArray[mid] return mid if (intArray[mid] == key){ return mid; } //if intArray[mid] > key then key is in left half of array if (intArray[mid] > key){ return binary_Search(intArray, low, mid-1, key);//recursively search for key }else //key is in right half of the array { return binary_Search(intArray, mid+1, high, key);//recursively search for key } } return -1; } public static void main(String args[]){ //define array and key int intArray[] = {1,11,21,31,41,51,61,71,81,91}; System.out.println("Input List: " + Arrays.toString(intArray)); int key = 31; System.out.println("\nThe key to be searched:" + key); int high=intArray.length-1; //call binary search method int result = binary_Search(intArray,0,high,key); //print the result if (result == -1) System.out.println("\nKey not found in given list!"); else System.out.println("\nKey is found at location: "+result + " in the list"); } }
آئوٽ پُٽ:
انپٽ لسٽ: [1، 11، 21، 31، 41، 51، 61، 71، 81، 91
ڳولهڻ لاءِ ڪي :
ڪيئي جڳھ تي ملي ٿي: 3 لسٽ ۾
Arrays.binarySearch () طريقو استعمال ڪندي.
جاوا ۾ Arrays ڪلاس هڪ 'binarySearch ()' طريقو مهيا ڪري ٿو جيڪو ڏنل Array تي بائنري ڳولا انجام ڏئي ٿو. اهو طريقو آري ۽ ڪي کي وٺي ٿو جنهن کي ڳوليو وڃي دليلن جي طور تي ۽ واپسي ۾ ڪيئي جي پوزيشن کي. جيڪڏهن ڪيڏي نه ملي، ته طريقو واپس اچي ٿو -1.
هيٺ ڏنل مثال Arrays.binarySearch () طريقو لاڳو ڪري ٿو.
import java.util.Arrays; class Main{ public static void main(String args[]){ //define an array int intArray[] = {10,20,30,40,50,60,70,80,90}; System.out.println("The input Array : " + Arrays.toString(intArray)); //define the key to be searched int key = 50; System.out.println("\nThe key to be searched:" + key); //call binarySearch method on the given array with key to be searched int result = Arrays.binarySearch(intArray,key); //print the return result if (result 0) System.out.println("\nKey is not found in the array!"); else System.out.println("\nKey is found at index: "+result + " in the array."); } }
آئوٽ پٽ:
انپٽ آري: [10, 20, 30, 40, 50, 60, 70, 80, 90]
جي ڳولها ڪرڻي آهي:50
ڪيئي انڊيڪس تي ملي ٿي: 4 صف ۾.
اڪثر پڇيا ويندڙ سوال
س # 1) توهان بائنري ڳولها ڪيئن لکندا آهيو؟ ?
جواب: بائنري ڳولا عام طور تي سرن کي اڌ ۾ ورهائڻ سان ڪئي ويندي آهي. جيڪڏهن ڳولهڻ لاءِ ڪنجي وچ واري عنصر کان وڌيڪ آهي،ان کان پوءِ سر جي مٿئين اڌ کي وڌيڪ ورهائي ڳولهيو ويندو آهي ۽ ذيلي سري کي ڳولهيو ويندو آهي جيستائين ڪيڏي نه ملي.
اهڙيءَ طرح، جيڪڏهن ڪيئي وچ واري عنصر کان گهٽ آهي، ته پوءِ ڪنجي کي هيٺين حصي ۾ ڳولهيو ويندو آهي. صف جو اڌ.
س #2) بائنري ڳولها ڪٿي استعمال ٿيندي آهي؟
جواب: بائنري ڳولا خاص طور تي استعمال ڪئي ويندي آهي ڳولا لاءِ سافٽ ويئر ايپليڪيشنن ۾ ترتيب ڏنل ڊيٽا خاص طور تي جڏهن ميموري اسپيس ڪمپيڪٽ ۽ محدود هجي.
س #3) بائنري سرچ جو وڏو O ڇا آهي؟
جواب : بائنري ڳولا جي وقت جي پيچيدگي O (logn) آهي جتي n صف ۾ عناصر جو تعداد آهي. بائنري ڳولا جي خلائي پيچيدگي O (1) آهي.
Q # 4) ڇا بائنري ڳولا ورجائيندڙ آهي؟
جواب: ها. جيئن ته بائنري ڳولا هڪ تقسيم ۽ فتح واري حڪمت عملي جو هڪ مثال آهي ۽ ان کي ٻيهر استعمال ڪندي لاڳو ڪري سگهجي ٿو. اسان صفن کي اڌ ۾ ورهائي سگھون ٿا ۽ ساڳئي طريقي کي ڪال ڪري سگھون ٿا بائنري ڳولا کي بار بار ڪرڻ لاءِ.
س #5) ان کي بائنري ڳولا ڇو چئبو آهي؟
0 جواب:بائنري سرچ الگورٿم استعمال ڪري ٿو تقسيم ۽ فتح واري حڪمت عملي جيڪا بار بار صف کي اڌ يا ٻن حصن ۾ ڪٽي ٿي. ان ڪري ان کي بائنري سرچ جو نالو ڏنو ويو آهي.نتيجو
بائنري سرچ جاوا ۾ اڪثر استعمال ٿيندڙ ڳولا واري ٽيڪنڪ آهي. بائنري ڳولها ڪرڻ جي گهرج اها آهي ته ڊيٽا کي ترتيب ڏنل ترتيب سان ترتيب ڏني وڃي.
هڪ بائنري ڳولا ٿي سگهي ٿيلاڳو ڪيو ويو آهي يا وري ٻيهر استعمال ڪندي يا ٻيهر ورجائيندڙ طريقي سان. جاوا ۾ Arrays ڪلاس پڻ 'binarySearch' طريقو مهيا ڪري ٿو جيڪو هڪ Array تي بائنري ڳولا انجام ڏئي ٿو.
اسان جي ايندڙ سبقن ۾، اسان جاوا ۾ مختلف ترتيب ڏيڻ واري ٽيڪنڪس کي ڳوليندا سين. 23