my prof made 90 slides in pseudo code and loop invariants that i didnt even know what was happening, watching your video it makes so much sense, thank you and keep up the great work
@@kamwow9469 bro every University brings up loop invariants or induction to prove algorithms. Professors even say "This is the only time you will ever need to formally prove an algorithm". 😂🥲
Here I am paying tuition to be taught this in 8 days and 3 1 hour long videos, meanwhile this video taught me this is less than 3 minutes. You are saving my Data structures and algorithms module. Thank you
Thank you so much for explaining this simply and effectively. The real example to follow along with is helpful and the psudocode at the end puts it back into a more studious context.
my professor kept rambling and rambling until I was just like, "do you even know how this works?" he admitted he didn't so I told him to put on Michael Sambol. later, he thanked me after class and told me that he had spent years trying to figure this one out.
Thank u for this, first time doing algorithms and data structure coding, got confused on how selection sort worked, watched this and instantly knew what to do basing my code off this.
your videos are accurate, simple and right to the point! thank you for making an effort to put it out there. you gained a subscriber today and i'm sharing the hell out of your videos from now on!
I watched this up to about 45 seconds where he had minimum set to 2 and current set to 1 and thought to myself "Please don't swap them. Please don't tell me we swap" then he had the fucking had the nerve to swap them and I'm not gonna lie, it really fucked up my morning.
just learned this from your video and wow this goes hard for smaller lists. looks like I'll need more than quick sort after all if my cool is to overoptimize sorting performance to have as-responsive-as-possible ui and fast builds :)
I think I’ve got it but let me just explain it in my own words and you can tell me if I got it correct. so for each iteration: * we start out with the left-most unsorted number. (I will refer to this number as, “j” and I will refer to the number to the left of j as, “k”.) but for the first iteration, we will use 0 for the value of k. * We check the array from left to right looking for the smallest number that is less than j but greater than k and if we find one, we will call that number, “q” * if we don’t find a number that is less than j and greater than k, we mark j as sorted and j stays in its current position throughout the entire sorting process because there is nothing that needs to be moved to the left of it. * However, if we do find a number that is less than j and greater than k, we will swap j with q (remember when I say, “q”, I mean the number that is less than j and greater than k) and mark q as sorted and q stays in its current position because there is nothing that needs to be moved to the left of it.
depending on the searching algorithm, algorithm can go to NLogN absolute worst case.. remember you are searching in a sorted list.. even if you start sorted decreasing order..
iirc the point of having this clause is to be more efficient depending on the size of the array and the complexity of the program you might be unnecessarily swapping a lot of numbers over and over, wasting time/energy
if j = i + 1, shouldn't the current item j of the inner loop, which indicates the blue arow in the video, starts one behind the red arow during each iteration instead of showing up together under the same number?
can someone tell me is this another implementation of selection sort? or this is other kind of sort? note that in the code I'm not looking for "iMin" or something like that, just straight swap when I catch a smaller element void sort(vector & arr, int n) { for (int i = 0; i < n - 1; i++) for (int j = i + 1; j < n; j++) if (arr[i] > arr[j]) swap(arr[i], arr[j]); }
Thank you for the fantastic video. I use it a lt a lot in my classes, but the pseudocode is confusing. The part of the FOR LOOP that says J < n - , should this be j = n-1??
I watched it at 2x and learned selection sort in 1min and 21 seconds.
I understood it in the first swap itself.. In 30 seconds.
@@iamdeepak__😂😂
@@iamdeepak__*understood
*2 min 21.5 secs
@@4NDTRY yeh 👍
my prof made 90 slides in pseudo code and loop invariants that i didnt even know what was happening, watching your video it makes so much sense, thank you and keep up the great work
Gatdamn, 90 slides. Das Mad!
Lmao loop invariants? Did you go to Cornell
@@kamwow9469 bro every University brings up loop invariants or induction to prove algorithms. Professors even say "This is the only time you will ever need to formally prove an algorithm". 😂🥲
tell him to change his way of teaching or get him fired
Makes me feel really blessed to have a prof like mine. Only needed to watch this video because I missed that class
Here I am paying tuition to be taught this in 8 days and 3 1 hour long videos, meanwhile this video taught me this is less than 3 minutes.
You are saving my Data structures and algorithms module.
Thank you
Thank you so much for explaining this simply and effectively. The real example to follow along with is helpful and the psudocode at the end puts it back into a more studious context.
Best explanation I've seen on the topic
my professor explained this in a way that made my brain scramble. lol but here I am learning it in a few minutes. thank you so much for these videos.
Really good. Simple, quick, easy. Much better than the other youtube videos which are practically 10-30 minute lectures that explain the same thing.
I spent a couple days trying to wrap around this... and this video helped me ALOT!!! And THANK YOU FOR THE PSEUDO CODE!
Thanks for this quick, easy and unambiguous explanation of the sorting algorithm
Thank you so much for explaining this simply and effectively.
my professor kept rambling and rambling until I was just like, "do you even know how this works?" he admitted he didn't so I told him to put on Michael Sambol. later, he thanked me after class and told me that he had spent years trying to figure this one out.
Thank u for this, first time doing algorithms and data structure coding, got confused on how selection sort worked, watched this and instantly knew what to do basing my code off this.
Awesome! Check the code repo if you have any doubts: github.com/msambol/dsa.
Dude. You explained very well. Simple and clear!
Well I have my offline college starting in two days and i didnt pay attention to all of this but now I don't regret it.. thanks brother ♥️✌️
Thank you so much for making such a simple to understand and concise explanation of this!!
These videos are so good for refresher on algorithms before my exam.
Thanks, Caleb!
@@MichaelSambol 👍 Any chance you'd consider doing a video on P, NP and NP complete?
@@calebkrauter4027 will add those to the list!
WTF, are you a god or what? My faculty took a week to do all the sorting, and you did it in like 20 minutes.
Man go and be a teacher the world needs more teachers like you
So simple. Greatly explained.
Thanks!! It's just like the bubble sort, but instead of swapping the elements, we update the pointers. Neat.
your videos are accurate, simple and right to the point!
thank you for making an effort to put it out there.
you gained a subscriber today and i'm sharing the hell out of your videos from now on!
Thank you very much. More coming soon.
Short, consise and easy to follow! Thank you for this!!
Thank you. You make it sound so easy!
Thank you for this visual explanation, I was able to code this using your visualization!
Thank you very much, just by watching your video I make a algorithm on my own
For anyone looking for working JS solution:
function selectionSort(arr) {
const len = arr.length
for(j=0;j
cool avatar, i tried to remove this hair for 2 seconds))
*The time complexities are*
Best: O(n^2)
Average: O(n^2)
Worst: O(n^2)
Storage: O(1)
Thank you very much! Python code:
array = [2,8,5,3,9,4,1]
def selection_sort(A):
print(f"Starting Array: {A}
")
for o_idx, o_val in enumerate(A):
min = o_val
print(f"Iteration #{o_idx+1}: pointer={o_val}, min={min}, array={A}")
for i_idx, i_val in enumerate(A[o_idx+1:]):
if i_val < min:
old_min, min = min, i_val
min_idx = o_idx+i_idx+1
print(f" Comparison: {min} < {old_min}")
else:
print(f" Comparison: {i_val} > {min}")
else:
A[o_idx], A[min_idx] = min, o_val
print(f" Swapping: {min} & {o_val}")
print(f"{A}
")
print(f"Resulting Array: {A}")
What an amazing and simple explanation... Thanks a lot sir!💝
Thank you, this is helping me in the exam ❤
thank you Michael. Very nice and clean explanation. Good job. Keep it up.
I never thought it would be this easy
Lol came back here after my prof played this and your other videos on sorting to us.
bro should have a Nobel prize for teaching
SUPER Simple and quick explaniation ! THANK U
I watched this up to about 45 seconds where he had minimum set to 2 and current set to 1 and thought to myself "Please don't swap them. Please don't tell me we swap" then he had the fucking had the nerve to swap them and I'm not gonna lie, it really fucked up my morning.
Lmao, this comment made my day XD
Great vids, easy and simple for revision :) Thanks!
this guy is sorting my ideas
Nicely done. I remember watching the Kruskal and Dijstra algorithms back when I had classes. Keep up!
Thanks a lot! Understood it completely man!
Great explaining. Useful for my subject Algorithm Analysis😄
THANK YOU!! this was amazing
just learned this from your video and wow this goes hard for smaller lists. looks like I'll need more than quick sort after all if my cool is to overoptimize sorting performance to have as-responsive-as-possible ui and fast builds :)
Great video! Exactly what I needed. tyvm!
i literally love you
thank you for such an useful video!
best video on selection sort
Thank u so much short and precise.
awesome, clean, and clear, thanks
amazing! thank you for the clean explanation
You made it simple.♥️
I did terrible on my CSA quiz, and this video wasn't there to help me when i needed. :(((
Simple explanation. Thanks a lot!
*Best sorting algorithm right there, no better one! Yup.*
Very nice visualisation, thanks
Fast and simple thank you so much
too good...
it is a very nice explanation...
I think I’ve got it but let me just explain it in my own words and you can tell me if I got it correct.
so for each iteration:
* we start out with the left-most unsorted number. (I will refer to this number as, “j” and I will refer to the number to the left of j as, “k”.) but for the first iteration, we will use 0 for the value of k.
* We check the array from left to right looking for the smallest number that is less than j but greater than k and if we find one, we will call that number, “q”
* if we don’t find a number that is less than j and greater than k, we mark j as sorted and j stays in its current position throughout the entire sorting process because there is nothing that needs to be moved to the left of it.
* However, if we do find a number that is less than j and greater than k, we will swap j with q (remember when I say, “q”, I mean the number that is less than j and greater than k) and mark q as sorted and q stays in its current position because there is nothing that needs to be moved to the left of it.
We divide the array into 2 partitions, the sorted array and non-sorted array, which we don't do in bubble sort. #IISH11CSHLIC
Thanks for making this video!
Very nice job! Thank You.
best explanation 💕
Neat Presentation & Simple Explaination.
I Like (Y)
these vids are soooooooooo helpful man
You know it's a big thing when it's now 3 minutes long
I love you Michael.
omg u saved my life period girl thanks queen!!!!!!
period.
i love these cute little videos
depending on the searching algorithm, algorithm can go to NLogN absolute worst case.. remember you are searching in a sorted list.. even if you start sorted decreasing order..
Commenting took longer then understanding this. Take a slice of this quick sort
After suffering the youtube..finally i got you 😂...
Excellent explained
These video helped me alot
hey is the (if iMin!=j) clause really nnecessary? Wouldn't it just swap it with itself and thereby not change anything
iirc the point of having this clause is to be more efficient
depending on the size of the array and the complexity of the program you might be unnecessarily swapping a lot of numbers over and over, wasting time/energy
yeah, the animation is wrong, the red index does not move with the blue one at the same time...
nice one sir 👍👍
fantastic and simple!!!
So smooth
Youre the best
Can you put a video on insertion sort?
If so that would be great!!
nice bro less time n more efficient cool keep it up!!!!
The choice of starting array still leaves room for confusion.
perfect perfect thank you king
This is proper explain, I went to other veedeo and no good
I understood so quick!
Sos mas grande que hay. Mastodonte
WHY DID I FIND THIS RIGHT AFTER MY COMPUTER exams
😞
Great explanation
Useful video. Thanks.
I LOVE YOU!!!!
GOD BLESSSSSSS YOUR LIFEEE
#IISH11CSHLIC Selection sort is a swap between the minimum value and the current value after a complete loop.
it can be improved by add best case worst case and time complexity
The time complexity for best case, worst case, and avg case are all O(n^2)
All three of those cases are O(n^2)
Thank you very much 🌹❤
you were violating the law by setting the name of the counter for the inner loop to i and for the outer loop to j
if j = i + 1, shouldn't the current item j of the inner loop, which indicates the blue arow in the video, starts one behind the red arow during each iteration instead of showing up together under the same number?
You are awesome...thank a lot
Good video but didn't explain or I didn't understand what happens when 2 or more numbers are the same
can someone tell me is this another implementation of selection sort? or this is other kind of sort? note that in the code I'm not looking for "iMin" or something like that, just straight swap when I catch a smaller element
void sort(vector & arr, int n) {
for (int i = 0; i < n - 1; i++)
for (int j = i + 1; j < n; j++)
if (arr[i] > arr[j])
swap(arr[i], arr[j]);
}
Yes
I would've failed if it weren't for your videos
Thank you for the fantastic video. I use it a lt a lot in my classes, but the pseudocode is confusing. The part of the FOR LOOP that says J < n - , should this be j = n-1??
If i get a question asking how many iteration it took overall