2.6.2 Binary Search Recursive Method

  Рет қаралды 556,388

Abdul Bari

Abdul Bari

Күн бұрын

Пікірлер: 154
@atulgunjal6627
@atulgunjal6627 4 жыл бұрын
Your mastery in converting complicated algorithmic steps into the simple stages is impressive.
@mohammadfaisal3649
@mohammadfaisal3649 Жыл бұрын
i wish there was a coding part also. i Have NEVER seen a teacher with this level of understanding in data structures.
@mansoorkhattak5072
@mansoorkhattak5072 5 жыл бұрын
Sir you are hero , superb !! Allah lambi zindagi de :)
@nitiKT
@nitiKT 2 жыл бұрын
Bari Sir, hats off to you. I brag to my friends that I was your student and thought me DSA during my engineering and every time I have an interview I make sure I go through some of your videos..
@preethamm.n1161
@preethamm.n1161 5 жыл бұрын
Sir, u are my hero sir 👑God of algorithms 👑 😇🌞😎💻 "Simply in the nptel outdated teachers are teaching the same concept for hours together And u are awesome sir without missing out any of the concepts u are teaching better than them sir" As enstien said "if u can't explain in simple ,u have to understand well enough" For the above qoute Ur best example sir Thank u sir it's helping me a lot God bless u sir
@jessesinger4790
@jessesinger4790 4 жыл бұрын
31/83 videos in, bought your course on data structures. Maybe jumping ahead of myself, but you're amazing at explaining this.
@mohamedatef3526
@mohamedatef3526 2 жыл бұрын
This is, by far the best tutorial for learning binary search I've ever seen. Many people have sufficient knowledge and skills and they try passing them to others but a few of them can deliver them in a convenient method like Abdul Bari Does.
@abhilashpatel3036
@abhilashpatel3036 4 жыл бұрын
Being from non cs background, it was very difficult for me to find time complexity of a algorithm. Your recurrence relation series has helped me alot.
@saran5671
@saran5671 Жыл бұрын
There is a slight mistake in your algorithm if(l==h) will throw you a stackoverflow error instead you should use if(h
@mustafamahmoudahmed1778
@mustafamahmoudahmed1778 2 жыл бұрын
Thanks for this helpful playlist, you are the best. I tried to implement the algorithm as it is in the video, it didn't work except for values already in the array. My recommendation: 1- remove the if block 2- Modify the else block to be "if (l h" Here is my implementation in C++: int BinSearch(int l, int h, int key,vector arr) { int mid; if (l
@backpropagated
@backpropagated 2 жыл бұрын
Thank you for these videos Abdul Bari. I normally struggle to learn from videos, but your concisesness helps so much. I know that my focus won't be wasted, so I can listen intently for the full video.
@eva42sh
@eva42sh 2 жыл бұрын
cannot express my gratitude. Thank you Mr Abdul - all of your videos are priceless! you're a legend. Thank you for helping to improve
@protek8
@protek8 4 жыл бұрын
I never understood recursion, but after watching this video I know all of it thanks, Abdul sir!
@Swansylinks
@Swansylinks 2 ай бұрын
You're so unique, I failed algorithm because I didn't understand it when my lecturer taught me. I am sure I will scatter my Saturday's exam curtesy of you Dr Abdul Bari.
@StefanoCocomazzi93
@StefanoCocomazzi93 5 жыл бұрын
I can only shay Thank You. I Just passed my algorithm exam with honors. Thank you, thank you and again thank you
@luckywhite7241
@luckywhite7241 Жыл бұрын
Great to come across your clips on algorithm, you lecture just rolled away huge pressure off my neck. Thanks Sir
@eva42sh
@eva42sh 2 жыл бұрын
Thank you Mr Abdul - all of your videos are priceless! you're a legend. Thank you for helping to improve
@zureka3242
@zureka3242 3 жыл бұрын
Sir in your recursive code, you didn't give a condition for when the element can't be found, i.e. you have to give a condition that when l>h return -1. Other than that amazing lectures
@vineetwidhani8513
@vineetwidhani8513 3 жыл бұрын
The first condition where l==h is when the algo will return 0 when an element is not found, in case the element is not found, before l becoming greater than h , it first becomes equal to l.
@AbdullahSiddiqui949
@AbdullahSiddiqui949 5 жыл бұрын
now i am clear you teach it better then , even our university teacher.
@Farahat1234
@Farahat1234 5 жыл бұрын
From which university you are?
@subramaniyanvg6367
@subramaniyanvg6367 3 жыл бұрын
Sir you should be guiding students for companies like google and amazon. Also please write a book on Data Structures definitely I will buy.
@khale-d
@khale-d 10 ай бұрын
this also is a good algorithm: def RBinarySearch(arr, value,l = 0,h = 0): if(l>h): return -1 mid = int((l+h) /2) if(arr[mid] == value): return mid elif (value > arr[mid]): l = mid+1 else : h = mid-1 return RBinarySearch(arr,value,l,h) arr = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29] print(RBinarySearch(arr,25,0,len(arr)-1))
@intuitivej9327
@intuitivej9327 3 жыл бұрын
I can finally write the code after this lecture series! Thank you from South Korea.
@dmsnm
@dmsnm 4 жыл бұрын
One question: Aren't we suppose to return 0 for successful events and -1,1, etc for unsuccessful events? Great lecture series btw.
@66renegade66
@66renegade66 4 жыл бұрын
Correct. The tutor here has array indices starting at 1. So function can return 0 if key not found. Most languages have array indices starting at 0, so return -1 if not found.
@weixinwang52
@weixinwang52 2 жыл бұрын
That's the thought I was looking for, thanks
@CLG111
@CLG111 4 күн бұрын
I've had two algorithms courses one as an undergrad and also one as a master's student and I was always kind of iffy about my understanding but now I understand and my learning is complete thanks to Professor Bari.
@chaulethanh752
@chaulethanh752 2 жыл бұрын
I can't see the method where you find the first occurrence of the element to look for and what if your array r
@gayatri263
@gayatri263 3 жыл бұрын
God bless you and your loved ones..... Keep rising... 🥰😘
@devesh1697
@devesh1697 6 жыл бұрын
I know my DAA is in safe hands now.
@amuzak9063
@amuzak9063 3 жыл бұрын
and 2 years later, I do too
@yogeshwarsingh6151
@yogeshwarsingh6151 3 жыл бұрын
@@amuzak9063 lmao Samw😂
@bageshwardham-1M
@bageshwardham-1M 3 жыл бұрын
DAA or DSA??😅
@ApniKaksha_bonded
@ApniKaksha_bonded 5 ай бұрын
​@@bageshwardham-1Msame question
@colemannelson5392
@colemannelson5392 2 жыл бұрын
Made this very easy to understand, divide and conquer!
@FELIPE-vj7vd
@FELIPE-vj7vd 2 жыл бұрын
I have just one thing to say: Thank you!
@akashbose5228
@akashbose5228 5 жыл бұрын
Sir instead of that if l==h block if we just check l>h and return wouldn't it still do the same considering we are already comparing with a[mid] later? Thank you
@chaosavenger2
@chaosavenger2 2 жыл бұрын
you'd also have to check if your lower bound is greater than you upper bound, such as for the input [2,5], target = 0
@saivishwanath958
@saivishwanath958 5 жыл бұрын
Great content . Quick correction : The recurrence relation is 2 * T(n/2) +1
@saifurrahman3961
@saifurrahman3961 4 жыл бұрын
I am facing a problem with this algorithm, if the key is not found then the function is not returning what's expected. The program just terminates. I think there needs a (l > h) terminate condition.
@senaholiz
@senaholiz Жыл бұрын
I noticed this too. This can easily be solved by another if chain in the first if. if () { ... }else if () { ... } else { return -1 }
@initalAS
@initalAS 6 жыл бұрын
only one word sir """SUPERRB"""
@anbarasanv5625
@anbarasanv5625 6 жыл бұрын
passing arguments (l,h,key,Arr).. I think array missing in the passed arguments sir
@anirbanmukherjee5591
@anirbanmukherjee5591 6 жыл бұрын
Call a constructor.
@vineetwidhani8513
@vineetwidhani8513 3 жыл бұрын
In such cases array is always declared as global variable. You can also pass it as argument but that would take more system memory.
@imgeek4282
@imgeek4282 2 жыл бұрын
@@vineetwidhani8513 Pass the reference then?
@anthatikalyan4995
@anthatikalyan4995 5 жыл бұрын
I love your way of delivering... Awesome
@jayadevpulaparty1341
@jayadevpulaparty1341 2 жыл бұрын
One thing i observed is that if we take an even sized array, we are getting tree of depth 5 instead of log(16)= 4. Please let me know if my observation is valid
@vijaypalmanit
@vijaypalmanit 5 жыл бұрын
super sir, your videos are really very helpful, you make the subject simple so that even a new student can understand, I am able to write programs watching your videos, thank you so much.
@amberchawla7930
@amberchawla7930 3 жыл бұрын
Sir i dont think l > h , case is covered which actually could occur
@codingvibesofficial
@codingvibesofficial 2 жыл бұрын
Why are we using return in if else block..instead we can avoid return in if else block I think return mid is sufficient
@josephsebastian1244
@josephsebastian1244 3 жыл бұрын
bro its good.my friend suggest u and i was lucky i got u
@practicemail3227
@practicemail3227 Жыл бұрын
I'm a non-cs background student and even i can understand such simple explanation. Hats off to you sir for your contribution sir.
@tubex1300
@tubex1300 2 жыл бұрын
Master what kinds of problems we can divide? like in case of the binary search above?
@supremoluminary
@supremoluminary 4 жыл бұрын
What if there are duplicate values? We want the first one. Input: array= [1, 5, 5, 5, 6] value = 5 Expect: 1. But your approach would divide the array in half and check the mid element, array[2]. array[2] is 5, and that matches the value you searching for, so your function would return 2. Instead, it should return 1.
@subhamroy5619
@subhamroy5619 4 ай бұрын
a=[3,6,8,12,14,17,25,29,31,36,42,47,53,55,62] z=int(input("Enter the number you want to search: ")) low=0 high=len(a)-1 while low
@AmulyaKishoo
@AmulyaKishoo 5 жыл бұрын
Binary Search has only Divide strategy and not conquer strategy. So, does it come under Divide & Conquer ?
@jonelleyu1895
@jonelleyu1895 2 жыл бұрын
So helpful! Thank you Sir! Btw would you please enable the subtitles? My english is not very good. Thank you.
@garogarabed6196
@garogarabed6196 5 жыл бұрын
The array starting at index 1 is confusing me, but in general awesome video! Thanks a lot!
@anupampaul2907
@anupampaul2907 5 жыл бұрын
Sir, where is the condition to check (l>h)??
@adityac4418
@adityac4418 5 жыл бұрын
how can be lower limit greater than the upper limit
@amberchawla7930
@amberchawla7930 3 жыл бұрын
@@adityac4418 it can come think of a subarray of 2 size and then mid is 0 index , now consider key smaller than mid
@sahilchaudhariarsss
@sahilchaudhariarsss 2 ай бұрын
mistake in algo-----> not checked condition for low>high if(low>high) return -1;
@deepak1291
@deepak1291 2 жыл бұрын
Algo worked fine when item is inside the array or greater then the array elements but fails, when item is less then the entire array elements. Pass: 1-> When item is present 2-> When item is greater then all the items present Failed: When Item is less then all the items int[] a = {2, 3, 4, 10, 40}; int searchItem = 1; int low = 0; int arraySize = a.length; int high = arraySize - 1; private static int search(int[] a, int low, int high, int searchItem) { if (low == high) { if (a[low] == searchItem) return low; else return -1; } else { int mid = (low + high) / 2; if (searchItem == a[mid]) return mid; if (searchItem < a[mid] ) return search(a, low, mid-1, searchItem); else return search(a, mid+1, high, searchItem); } } Condition need to be added : Instead of: if (low == high) { we need to put one more check there: if (low >= high) {
@rohanMJ
@rohanMJ 5 жыл бұрын
shouldn't we have to pass array into the recursive function? or should array be a global variable. Am i wrong guys?
@intuitivej9327
@intuitivej9327 3 жыл бұрын
Yes we need to pass array to the fuction. We can just capture the main logic behind so you will have no problem if it is kept in mind.
@prateeksharma2839
@prateeksharma2839 6 ай бұрын
Please sir ...i'm little bit confused... I need your help...please reply and tell me that binary search iterative method also use divide & conquer strategy or only recursive approach is using divide & conquer for binary search
@shardhajanani2962
@shardhajanani2962 6 жыл бұрын
If they ask binary search in question paper which method have to follow either iterative method or recursive method ???
@shardhajanani2962
@shardhajanani2962 6 жыл бұрын
Ok sir..thank you so much 😊
@mohammedadel8948
@mohammedadel8948 2 жыл бұрын
Thank you for your hard work.
@dark4o90
@dark4o90 4 жыл бұрын
but this is not really D&C algorithm as it just reduces the problem but it does not generate separate results for sub-problems which are later merged on like in quicksort or parallel sum
@pranki2254
@pranki2254 5 жыл бұрын
Sir, I just bought your Data Structures course on Udemy. I have working experience in Java but the course is taught in C and C++, will it help me in detail with respect to Java or will i be missing something?
@akshaysharma8235
@akshaysharma8235 Жыл бұрын
Sir, a function can return the function itself which you have done int binary search algorithm ???
@RameshMaity90
@RameshMaity90 11 ай бұрын
Batch of 2023 ❤ still masterpiece for Algorithm
@rachit007
@rachit007 4 жыл бұрын
Great explanation
@priyankagehlot9945
@priyankagehlot9945 7 ай бұрын
Thankyou sir 🥰😄
@shobhitlamba3495
@shobhitlamba3495 2 жыл бұрын
why aren't we using "while(h>=l)" in the else statement?
@YanMinThwin
@YanMinThwin Жыл бұрын
Thank you soo much sir
@pmahaur962
@pmahaur962 5 ай бұрын
Sir what's the meaning of return in coding why we do this and when?????
@SRNR_PODCAST.
@SRNR_PODCAST. 3 жыл бұрын
a gold mine in youtube
@rahulraj-hn1cd
@rahulraj-hn1cd 5 жыл бұрын
Superb Sir ji thnq for giving algo video
@saivaraprasadmandala8558
@saivaraprasadmandala8558 Жыл бұрын
why isn't the order of binary search is O(log n to the base 2)
@adityakumarmishra5556
@adityakumarmishra5556 4 жыл бұрын
Sir time we get by iterarative algorithm and recursive algo is same log(n) so which one is best for use .
@mohammedrizin3015
@mohammedrizin3015 4 жыл бұрын
sir do we want to define the l and high values in recursive algorithm
@sahilgurung8876
@sahilgurung8876 4 жыл бұрын
Btw why is it t(n/2) for the returning functions even if rbinsearch function takes t(n) time they are the same aren't they
@pragmatic_p8
@pragmatic_p8 3 жыл бұрын
it recursively called for only half of the array numbers...so n/2
@auroraz6911
@auroraz6911 2 жыл бұрын
@@pragmatic_p8 Thanks for your clear explanation! I was also confused about it, but now I totally understand.
@thenerdycoder07
@thenerdycoder07 4 жыл бұрын
Best Ada teacher♥️♥️♥️♥️
@adipratapsinghaps
@adipratapsinghaps 3 жыл бұрын
Sir, how is BinarySearch Divide and Conquer? We are not dividing the problem into multiple sub-problems. We are, at every step, decreasing the problem into a single smaller problem. We don't divide the array into 2 halves at each stage and process both arrays. I read on internet it is a Decrease and Conquer problem. Is this true?
@superawesomeninja2
@superawesomeninja2 3 жыл бұрын
This is a truly great video, but wouldn't we want to include the sorted array as one of the parameters for the recursive binary search?
@shishiradhikari1911
@shishiradhikari1911 6 жыл бұрын
Don't we need to pass the Array as one of the parameters (which in this case is A)? It does not really matter but if you want to be pedantic then I think you should pass A as one of the parameters too.
@shishiradhikari1911
@shishiradhikari1911 6 жыл бұрын
Makes sense.I was just being pedantic. Thanks for these awesome videos!
@jairam1741
@jairam1741 4 жыл бұрын
If element not found you return zero but what will happen if index of the element is zero?
@downtowngedi
@downtowngedi 5 жыл бұрын
Sir, why did you put a condition to check whether l is less than h?
@downtowngedi
@downtowngedi 5 жыл бұрын
What if the element isn't present in the array. The call should be returned rather than calculating mid in else.
@krishnamohan1809
@krishnamohan1809 5 жыл бұрын
Nice video sir,but i think it will not work for cases like key=1 and array=[2,3];
@KhwiloWatai012
@KhwiloWatai012 3 жыл бұрын
The base case should be: if (low > high) { return -1; } Since 1 is less value than 2, the first element of the array, the recursion in this lesson will run without reaching its base case. At some point, high will be less than low which would then result in an error. So it's best to define your base case as the above example.
@esgmodiyt1359
@esgmodiyt1359 4 жыл бұрын
Besttttttttttt teacher
@gateeasycse
@gateeasycse 5 жыл бұрын
Sir generly any problem written in iterative time complexity take more or equal to recursive ?
@gateeasycse
@gateeasycse 5 жыл бұрын
Abdul Bari sir iterative and recursive are equailvent power? If yes then y we are using recursive ?plz explain .greedy, dynamic approach following iterative or recursive or both
@basavrajningadali4919
@basavrajningadali4919 5 ай бұрын
sir please make videos on python also
@divyanshutripathy3484
@divyanshutripathy3484 4 жыл бұрын
Wouldn't the code still work if we only wrote what's in the main else block?
@kirandeepsingh9144
@kirandeepsingh9144 6 жыл бұрын
where is combine step in binary search after divide and solve step?
@kirandeepsingh9144
@kirandeepsingh9144 6 жыл бұрын
+Abdul Bari without combing it full fill the divide and conquer guidelines? as it says there are 3 phases divide conquer and combine
@abhisheksinghrajput2624
@abhisheksinghrajput2624 6 жыл бұрын
Thank you sir and great explanation
@TTAGGGTTAGGG
@TTAGGGTTAGGG 7 ай бұрын
never though I'd have Prakash Raj teach me CS
@Btech_baatitulu
@Btech_baatitulu 7 ай бұрын
Not satisfied 😢
@vigneshprabhu7626
@vigneshprabhu7626 Жыл бұрын
I love u sir you're my bahubali
@karanssh
@karanssh 3 жыл бұрын
4:46 you might want to mention that we return 0 after the last else block in case element not in array. Also, return 0 denotes success in some languages, better to return -1 or an error but that's just down to my personal preference
@adriann789
@adriann789 2 жыл бұрын
No need to return in the last else block since returning the recursive function will eventually return l or -1 (not found) as per the first if (l == h) condition. By continually halving the array, we will eventually hit the base case where the array will only contain 1 element.
@45_vrushalinikam19
@45_vrushalinikam19 11 ай бұрын
Thank you🙏
@seiftahawy54
@seiftahawy54 4 жыл бұрын
Sir, you're great !
@raakuu
@raakuu 3 жыл бұрын
You are great❤️❤️
@syedfamily1
@syedfamily1 3 жыл бұрын
Thank you x 100
@ihsannuruliman3656
@ihsannuruliman3656 2 жыл бұрын
did he forget to input the array in the parameter?
@sheraz_razzaq
@sheraz_razzaq 5 жыл бұрын
Thank you.. Sir....
@vishalrao5541
@vishalrao5541 10 ай бұрын
nothing understandable
@pvssandeep2836
@pvssandeep2836 4 жыл бұрын
Thank u sir
@ArshdeepSingh-nm1tt
@ArshdeepSingh-nm1tt 5 жыл бұрын
i donno why he took that pause 0:02 , anyways he's best!
@laxmig7764
@laxmig7764 2 жыл бұрын
Explain examples sir
@aadarshmishra1488
@aadarshmishra1488 5 жыл бұрын
mja aa gya sir
@RHIN0o
@RHIN0o 5 жыл бұрын
thanks for this video!
2.6.3 Heap - Heap Sort - Heapify - Priority Queues
51:08
Abdul Bari
Рет қаралды 2,1 МЛН
2.6.1 Binary Search Iterative Method
19:36
Abdul Bari
Рет қаралды 822 М.
НАШЛА ДЕНЬГИ🙀@VERONIKAborsch
00:38
МишАня
Рет қаралды 3 МЛН
Não sabe esconder Comida
00:20
DUDU e CAROL
Рет қаралды 50 МЛН
2.1.1 Recurrence Relation (T(n)= T(n-1) + 1) #1
13:48
Abdul Bari
Рет қаралды 1,7 МЛН
Binary Search in Java - Full Simple Coding Tutorial
17:48
Coding with John
Рет қаралды 123 М.
5 Simple Steps for Solving Any Recursive Problem
21:03
Reducible
Рет қаралды 1,2 МЛН
2.8.1  QuickSort Algorithm
13:43
Abdul Bari
Рет қаралды 3,2 МЛН
Binary Search - Recursive implementation
9:10
mycodeschool
Рет қаралды 162 М.
2.7.2.  Merge Sort Algorithm
24:07
Abdul Bari
Рет қаралды 1,7 МЛН
3.5 Prims and Kruskals Algorithms - Greedy Method
20:12
Abdul Bari
Рет қаралды 2,8 МЛН