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.
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.
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.
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!
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 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.
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.
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
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..
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?
Hmmm...I'm getting whiffs of insertion sort here. Like selection sort we always look for the minimum and then swap. Insertion sort we ask is this the smallest we've seen yet then slot it into place. Similar ideas
@@plutomessi21 Isn't stable algorithm always better than unstable one, with all other conditions the same? I once needed a stable sort algorithm when I created a GUI that showed a sorted list of values that got constantly updated. But I don't remember any time I specifically needed an unstable algorithm.
@typingcat yes yes stable algo is always better, selection sort is just a technique which is taught in the universities but used very less frequently in the real world😊
I don't understand why you put n-1 in the first for, it doesn't work for me. Here's my example of selection sort: #include int main() { int i,j,tempor,array[]={5,9,3,14,11}; printf("array before sorting: "); for(i=0;i!=5;i++) printf("array[%d] holds value %d ",i,array[i]); for(i=0;i!=5;i++) { for(j=i+1;j!=5;j++) { if(array[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??
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]); }
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.
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.
Best explanation I've seen on the topic
Really good. Simple, quick, easy. Much better than the other youtube videos which are practically 10-30 minute lectures that explain the same thing.
Thanks for this quick, easy and unambiguous explanation of the sorting algorithm
I spent a couple days trying to wrap around this... and this video helped me ALOT!!! And THANK YOU FOR THE PSEUDO CODE!
Thank you so much for explaining this simply and effectively.
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 ♥️✌️
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.
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!
Thank you so much for making such a simple to understand and concise explanation of 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!
Thank you very much. More coming soon.
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.
Short, consise and easy to follow! Thank you for this!!
Man go and be a teacher the world needs more teachers like you
So simple. Greatly explained.
Thank you for this visual explanation, I was able to code this using your visualization!
Thanks!! It's just like the bubble sort, but instead of swapping the elements, we update the pointers. Neat.
Thank you. You make it sound so easy!
this guy is sorting my ideas
Thank you very much, just by watching your video I make a algorithm on my own
What an amazing and simple explanation... Thanks a lot sir!💝
thank you Michael. Very nice and clean explanation. Good job. Keep it up.
Thank you, this is helping me in the exam ❤
i literally love you
Nicely done. I remember watching the Kruskal and Dijstra algorithms back when I had classes. Keep up!
Lol came back here after my prof played this and your other videos on sorting to us.
SUPER Simple and quick explaniation ! THANK U
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 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
*The time complexities are*
Best: O(n^2)
Average: O(n^2)
Worst: O(n^2)
Storage: O(1)
Thanks a lot! Understood it completely man!
THANK YOU!! this was amazing
Great vids, easy and simple for revision :) Thanks!
I never thought it would be this easy
Great explaining. Useful for my subject Algorithm Analysis😄
Great video! Exactly what I needed. tyvm!
best video on selection sort
omg u saved my life period girl thanks queen!!!!!!
period.
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))
Thank u so much short and precise.
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}")
thank you for such an useful video!
these vids are soooooooooo helpful man
bro should have a Nobel prize for teaching
awesome, clean, and clear, thanks
amazing! thank you for the clean explanation
I did terrible on my CSA quiz, and this video wasn't there to help me when i needed. :(((
Thanks for making this video!
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.
You made it simple.♥️
Very nice visualisation, thanks
Simple explanation. Thanks a lot!
*Best sorting algorithm right there, no better one! Yup.*
So smooth
Youre the best
too good...
it is a very nice explanation...
I love you Michael.
Fast and simple thank you so much
i love these cute little videos
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
We divide the array into 2 partitions, the sorted array and non-sorted array, which we don't do in bubble sort. #IISH11CSHLIC
Very nice job! Thank You.
best explanation 💕
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..
These video helped me alot
Excellent explained
nice bro less time n more efficient cool keep it up!!!!
nice one sir 👍👍
fantastic and simple!!!
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?
but 5 is smaller than 8 right ? why did it not get exchanged with 5?
I LOVE YOU!!!!
GOD BLESSSSSSS YOUR LIFEEE
Why not putting the swap function inside the if condition after the iMin = i;
perfect perfect thank you king
After suffering the youtube..finally i got you 😂...
Sos mas grande que hay. Mastodonte
Neat Presentation & Simple Explaination.
I Like (Y)
Can you put a video on insertion sort?
If so that would be great!!
What happens if two of the numbers are the same?
yeah, the animation is wrong, the red index does not move with the blue one at the same time...
I understood so quick!
If i get a question asking how many iteration it took overall
Great explanation
Hmmm...I'm getting whiffs of insertion sort here. Like selection sort we always look for the minimum and then swap. Insertion sort we ask is this the smallest we've seen yet then slot it into place. Similar ideas
So, the complexity is the same as bubble sort. Then, why do we need both? Is it any better than bubble sort in some specific applications?
bubble sort is stable whereas this is unstable
@@plutomessi21 Isn't stable algorithm always better than unstable one, with all other conditions the same? I once needed a stable sort algorithm when I created a GUI that showed a sorted list of values that got constantly updated. But I don't remember any time I specifically needed an unstable algorithm.
@typingcat yes yes stable algo is always better, selection sort is just a technique which is taught in the universities but used very less frequently in the real world😊
This is proper explain, I went to other veedeo and no good
I don't understand why you put n-1 in the first for, it doesn't work for me. Here's my example of selection sort:
#include
int main()
{
int i,j,tempor,array[]={5,9,3,14,11};
printf("array before sorting:
");
for(i=0;i!=5;i++) printf("array[%d] holds value %d
",i,array[i]);
for(i=0;i!=5;i++)
{
for(j=i+1;j!=5;j++)
{
if(array[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??
Useful video. Thanks.
Would a recursive selection sort be less efficient than a nested loop selection sort?
The choice of starting array still leaves room for confusion.
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)
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
Thank you very much 🌹❤
#IISH11CSHLIC Selection sort is a swap between the minimum value and the current value after a complete loop.