Selection Sort Algorithm Explained (Full Code Included) - Python Algorithms Series for Beginners

แชร์
ฝัง
  • เผยแพร่เมื่อ 10 พ.ย. 2024

ความคิดเห็น • 92

  • @abhivaryakumar3107
    @abhivaryakumar3107 2 หลายเดือนก่อน +1

    4 years later and you are literally saving my life
    Such a gift for teaching
    Thank you

  • @janmuhammad7376
    @janmuhammad7376 4 ปีที่แล้ว +35

    I wish I have teachers like him at my college

  • @lovesignal
    @lovesignal ปีที่แล้ว +4

    Yeah, you're really talented at teaching. Believe me when I say you've got a real gift. And thank you for sharing it because you don't know how daunting this concept was to me when hearing it from other instructors.

  • @utkarshmalik4471
    @utkarshmalik4471 4 ปีที่แล้ว +39

    Hey Derrick this is the best Algorithm Playlist I ever came across
    So please it's a humble request to make more videos on Algorithm

    • @thatcherkane4955
      @thatcherkane4955 3 ปีที่แล้ว

      Sorry to be off topic but does anybody know a way to log back into an Instagram account??
      I was stupid forgot the password. I love any assistance you can give me

    • @kasontrevor966
      @kasontrevor966 3 ปีที่แล้ว

      @Thatcher Kane instablaster =)

    • @thatcherkane4955
      @thatcherkane4955 3 ปีที่แล้ว

      @Kason Trevor thanks so much for your reply. I found the site through google and Im waiting for the hacking stuff now.
      Looks like it's gonna take quite some time so I will reply here later when my account password hopefully is recovered.

    • @thatcherkane4955
      @thatcherkane4955 3 ปีที่แล้ว

      @Kason Trevor it did the trick and I now got access to my account again. I'm so happy!
      Thank you so much you saved my account !

    • @kasontrevor966
      @kasontrevor966 3 ปีที่แล้ว

      @Thatcher Kane Glad I could help :)

  • @navodyaliyanage473
    @navodyaliyanage473 3 ปีที่แล้ว +5

    this is absolutely the best series on algorithms, I struggled a lot watching other videos, but this is really amazing, clear and short.

  • @AlfredDHull
    @AlfredDHull 3 ปีที่แล้ว +1

    Still loving this video two years later Derrick!

  • @RadioKilledMusic
    @RadioKilledMusic 4 ปีที่แล้ว +2

    def selection_sort(list_a):
    indexing_length=range(len(list_a)-1)
    for i in indexing_length:
    min_value=i
    for j in range(i+1,len(list_a)):
    if list_a[j]

  • @andrewbrower4158
    @andrewbrower4158 4 ปีที่แล้ว +6

    This tutorial is incredible. Thank you for teaching it so effectively

  • @johnhillescobar
    @johnhillescobar 5 ปีที่แล้ว +6

    This is a great, amazing and super instructional video. My code for this algorithm is by far more complex. Love the code you created.

    • @aqualung1466
      @aqualung1466 2 ปีที่แล้ว

      @Maryam Ashraf Below is what I did to test - setup params for "my_range" and "num_elements", or do like I did and make these arguments to your script with sys.argv.
      import sys
      import time
      import random
      my_range = int(sys.argv[1])
      num_elements = int(sys.argv[2])
      my_array = [random.randint(1, my_range) for i in range(0, num_elements)]
      start_time = time.time()
      bubble_sorted_array = list(bubble_sort(my_array))
      bubble_sort_run_time = time.time() - start_time
      start_time = time.time()
      selection_sorted_array = list(selection_sort(my_array))
      selection_sort_run_time = time.time() - start_time
      selection_sort_efficiency = bubble_sort_run_time / selection_sort_run_time
      print("bubble sort took {:.2f} seconds to run".format(bubble_sort_run_time))
      print("selection sort took {:.2f} seconds to run".format(selection_sort_run_time))
      print("selection sort was {:.2f} times more efficient than bubble sort".format(selection_sort_efficiency))
      HTH

  • @AlternateMelatonin
    @AlternateMelatonin ปีที่แล้ว

    I always wonder, why my professor spends 50 mins lecture just to teach what you show in 5 mins. Thank you always.

  • @easynow6599
    @easynow6599 2 ปีที่แล้ว

    i have to admit.. I love your short but badass bass music at the intro..

  • @coolios685
    @coolios685 4 ปีที่แล้ว +1

    Dude!!! Derrick this is so awesome. you make these concepts so easy to learn. Keep it up!!!

  • @timohelasvuo9650
    @timohelasvuo9650 5 ปีที่แล้ว

    Here again for another alogorithm treat! Thanks buddy for yet again great video. Looking forward to look into the code on my comp later today

  • @aqualung1466
    @aqualung1466 2 ปีที่แล้ว +1

    Your videos as terrific, thank you. Below is what I came up with - it is almost twice as fast as your code. Why is that??
    def selection_sort(unsorted_list):
    sorted_list = []
    while len(unsorted_list) > 0:
    min_index, min = 0, unsorted_list[0]
    for i in range(0, (len(unsorted_list) - 1)):
    if unsorted_list[i] < min:
    min_index, min = i, unsorted_list[i]
    sorted_list.append(unsorted_list.pop(min_index))
    return sorted_list

  • @abletmuhtar8979
    @abletmuhtar8979 5 ปีที่แล้ว +8

    Pls teach all of those fundamental algorithms. Thanks

  • @shrutikanikhar7987
    @shrutikanikhar7987 4 ปีที่แล้ว +1

    You're an amazing teacher.......your videos are very helpful.... Thanks

  • @tuborao
    @tuborao 4 ปีที่แล้ว +8

    Hi Derrick, first of all I would like to thank you for your videos. They are helping me a lot!
    I think I found an indentation error inside your script in your githup area.
    The "if min_value !=1" is not indented with the "for j", and this can cause some sort errors if the first element of the list is equal to the last element.
    thanks!
    for j in range(i+1, len(list_a)):
    if list_a[j] < list_a[min_value]:
    min_value = j
    if min_value != i:
    list_a[min_value], list_a[i] = list_a[i], list_a[min_value]
    return list_a
    print(selection_sort([6,7,8,7,6,5,4,5,6,7,6,7,8,9,7,9,0]))

  • @mahadkhurram2950
    @mahadkhurram2950 3 ปีที่แล้ว

    Thanks bro, I have an exam tomorrow. And this is really gonna help.

  • @user-uw3hu2bb4s
    @user-uw3hu2bb4s 3 ปีที่แล้ว

    hey buddy thanks for helping us
    and i coded my own version
    def selectionSort(l):
    indexLength = range(0,len(l) - 1)
    for i in indexLength:
    minvalue = i
    for j in range(i+1,len(l)):
    if l[j] < l[minvalue]:
    l[j],l[minvalue] = l[minvalue],l[j]
    j = j -1
    return l
    print(selectionSort([1,3,0]))
    this works for me!

  • @DeepakSah3.0
    @DeepakSah3.0 7 หลายเดือนก่อน

    Love from India - Thanks

  • @lone.wo1f
    @lone.wo1f 4 ปีที่แล้ว +1

    Great tutorial! Easy to grasp the concepts.. Subbed!

  • @rushas
    @rushas 5 ปีที่แล้ว

    I like the new intro and the outro! Content is also great!

  • @anirbanc88
    @anirbanc88 2 ปีที่แล้ว

    you are the coolest guy ever man, thanks so much

  • @nowyouknow2249
    @nowyouknow2249 5 ปีที่แล้ว +1

    Nice video like it's really cool.
    Fire on bruv!

  • @SEE.ME.N0.M0RE
    @SEE.ME.N0.M0RE 3 ปีที่แล้ว +1

    Thank you so much!

  • @carloschaccon8465
    @carloschaccon8465 5 ปีที่แล้ว +1

    Awesome Derrick, Have you considered a video for Regular Expressions to find data over large files, It is just an idea, thanks again, and keep sharing your knowledge .

  • @sebastianlupa7355
    @sebastianlupa7355 3 ปีที่แล้ว +1

    I think calling min_value index_of_min_value could make it clearer, took me a while to figure it out :-)

  • @jiahuizhu3911
    @jiahuizhu3911 4 ปีที่แล้ว +1

    A basic question. How come the 'changing position' could work? such as list[j], list[i] = list[i], list[j]. The first assignment should change list[j], the the second assignment will come back to i, isn't it? Has python put some secrete third item to keep the value temporarily? I am a learner on Python:) Thank you very much in advance

    • @rahulnegi456
      @rahulnegi456 3 ปีที่แล้ว

      its swapping the expression: “ a, b = b, a”, first right gets assigned to first left and second right get assigned to second left at the same time therefore swap values of a and b
      Search for one liner swapping in python you will get it!

  • @rayanrahmoune1064
    @rayanrahmoune1064 4 ปีที่แล้ว +1

    I did it another way i don't know if it's selection sort
    def selectionsort(mylist):
    indexing_length = len(mylist)
    sorted = []
    if indexing_length mylist[value]:
    min = mylist[value]
    mylist[0], mylist[value] = mylist[value] , mylist[0]
    mylist.pop(0)
    notsorted = mylist
    sorted.append(min)
    return sorted + selectionsort(notsorted)

  • @navodyaliyanage473
    @navodyaliyanage473 3 ปีที่แล้ว

    please make more videos on python..on what's after algorithms

  • @xynerd
    @xynerd 2 ปีที่แล้ว

    awesome explanation!

  • @alexeyigonen3170
    @alexeyigonen3170 4 ปีที่แล้ว

    Thanks for your videos.
    Will this code be shorter? (prints really help to see the work of the two cycles)
    for k in range(0,n-1):
    print('for cycle, k: ', k)
    for x in range(1, n):
    print("for cycle, x:",x,a)
    if a[k] > a[x] and x > k:
    a[k], a[x] = a[x], a[k]

  • @mehmetozel9001
    @mehmetozel9001 3 ปีที่แล้ว

    Really really easy explained I love u

  • @lyricsdelivered
    @lyricsdelivered 2 ปีที่แล้ว

    How do you calculate time complexity

  • @breakoutgaffe4027
    @breakoutgaffe4027 2 ปีที่แล้ว

    great explanation

  • @lukasreissig4500
    @lukasreissig4500 3 ปีที่แล้ว

    I am a beginner with Python, which programming evironment is that?

  • @hardiktmustudent5851
    @hardiktmustudent5851 4 ปีที่แล้ว

    hey can you plz tell me a program for to rotate a matrix 90 degree anti-clockwise

  • @Futball860
    @Futball860 3 ปีที่แล้ว

    Would the result be different if we used indexing_length = range(0, len(list_a))?

  • @dewman7477
    @dewman7477 4 ปีที่แล้ว

    I don’t get why indexing length only goes to second last item in unsourced list. What if the item in the unworried list is smaller than the previous minimum value?

  • @jaket750
    @jaket750 2 ปีที่แล้ว

    thanks man you saved me

  • @abdullahshahid6216
    @abdullahshahid6216 3 ปีที่แล้ว

    Line 7: Should the min_value be equal to list_a[ i ]???
    Please answer

  • @erikcarcelen1663
    @erikcarcelen1663 4 ปีที่แล้ว

    Hey, amazing video and so beautiful explanation, but I have a question hehe How do you do your animations?

  • @krissh6563
    @krissh6563 4 ปีที่แล้ว

    Which software you are using for this video editing

  • @handle-2
    @handle-2 3 ปีที่แล้ว

    can someone explain what this line does? its line 14 in his code
    list_a[min_value],list_a[i]=list_a[i],list_a[min_value]

    • @rahulnegi456
      @rahulnegi456 3 ปีที่แล้ว

      its swapping the expression: “ a, b = b, a”, first right gets assigned to first left and second right get assigned to second left at the same time therefore swap values of a and b
      Search for one liner swapping in python you will get it!

  • @DispelTV
    @DispelTV 3 ปีที่แล้ว

    When I measure the time it takes to sort with bubble vs selection, selection always takes longer to execute. How is selection better than bubble if bubble takes less time and there's 2 for loops in selection sort which leads to higher complexity O(n^2)? Otherwise, fantastic and simple videos to learn from.

  • @codex8332
    @codex8332 4 ปีที่แล้ว +1

    Please I don't understand the logic behind.the last part. If the min_value != i . Please I need an explanation

    • @KeepCoding69
      @KeepCoding69 ปีที่แล้ว

      It's not required actually u can just simply write the switch statement and it would still work.

  • @luffyhat3852
    @luffyhat3852 3 ปีที่แล้ว

    your code isnt working for [3,1,2,5,4] this input .
    it shows the output as [2,1,3,4,5]

    • @KeepCoding69
      @KeepCoding69 ปีที่แล้ว

      You need to write the switch statement outside the 2nd for loop.
      I know it's late but I hope you will find it useful.

  • @somyamaniktala1090
    @somyamaniktala1090 4 ปีที่แล้ว

    best explanation..

  • @aminetlemcani693
    @aminetlemcani693 3 ปีที่แล้ว

    Thanks for the video

  • @betobernal486
    @betobernal486 4 ปีที่แล้ว

    Hi Derrick thanks for your videos. I solved in a recursive way, take a look!
    def selection_sort(lista,sortedd):

    if len(lista) !=0:
    mini=lista[0]
    for i in lista[1:]:
    mini=min(mini,i)
    sortedd.append(mini)
    lista.remove(mini)

    selection_sort(lista,sortedd)

    return sortedd
    def sorting(lista):
    return selection_sort(lista,[])
    a=[3,3,54,2345,542,456,0,3,4,4,3,6]
    sorting(a)
    The problem is that my function requires 2 args, thats why I had to implement the second function. Is there a way to do it this way with only one function? Thanks!

  • @alighaith9717
    @alighaith9717 5 ปีที่แล้ว

    thank you for effort Derrick , can you help me with this issue (I have a file of 1000 images and i want to classify it at specific folders i already created for example : from pic 1 to 10 move to folder number 1 and from 12 to 15 to folder number 2 etc ....)I'm biggner on python if you help me I really appreciated it .

  • @sergdonskikh2140
    @sergdonskikh2140 4 ปีที่แล้ว +1

    Hi! Good lessons!

  • @ahmedghanem3126
    @ahmedghanem3126 4 ปีที่แล้ว +1

    Hey Bro You have wrong code
    if you put [ '1', '4', '19']
    output will be [ '1', '19' , '4']

    • @gaganjeetsingh673
      @gaganjeetsingh673 4 ปีที่แล้ว

      No. The code is absolutely fine. You must've implemented it wrong.

    • @SReaperz
      @SReaperz 4 ปีที่แล้ว +1

      his code is the problem to fix it just add
      if min_value != i:
      list_a[min_value], list_a[i] = list_a[i], list_a[min_value]
      min_value = i

  • @johndunn6253
    @johndunn6253 5 ปีที่แล้ว

    Good stuff. Thanks

  • @mhd403
    @mhd403 4 ปีที่แล้ว

    when we changed iMin = j does that change the iMin value or the value stored at list[iMin]?

    • @16aasthadoshi95
      @16aasthadoshi95 4 ปีที่แล้ว

      imin value whereas list[imin]=j changes value in the list to value of j

  • @samuelchen8635
    @samuelchen8635 4 ปีที่แล้ว

    thank you for making this :0

  • @shanmuga-raj
    @shanmuga-raj 3 ปีที่แล้ว

    bro can you do more videos like this...

  • @prasikrar3927
    @prasikrar3927 3 ปีที่แล้ว

    thanks sir
    iam from wkwkw island

  • @leas9854
    @leas9854 4 ปีที่แล้ว

    What do i and j stand for?

    • @KeepCoding69
      @KeepCoding69 ปีที่แล้ว

      Those are the counter variables

  • @MadhushreeSinha
    @MadhushreeSinha 4 ปีที่แล้ว

    Isn't the min_val != i : is redundant?

    • @rahulnegi456
      @rahulnegi456 3 ปีที่แล้ว

      yes its not necessary

  • @rishabhawasthi8192
    @rishabhawasthi8192 2 ปีที่แล้ว

    David Bowie teaching CS

  • @darthbolloful
    @darthbolloful 4 ปีที่แล้ว

    Derrick stop it you're scaring me

  • @expat2010
    @expat2010 4 ปีที่แล้ว

    Cool!

  • @masoud4843
    @masoud4843 2 ปีที่แล้ว +1

    ❤👌

  • @AbdullahKhan-dl9lm
    @AbdullahKhan-dl9lm 3 ปีที่แล้ว

    ahhh....The algorithm doesn't work.

  • @hamdamjonganijonov8825
    @hamdamjonganijonov8825 4 ปีที่แล้ว

    lmao, why is his code sooo easy to understand!

  • @yunkel
    @yunkel 5 ปีที่แล้ว

    👍

  • @rw4877
    @rw4877 3 ปีที่แล้ว

    You have beautiful eyes man

  • @strade740
    @strade740 9 หลายเดือนก่อน

    bro look like rizzler

  • @qasimarshad2662
    @qasimarshad2662 12 วันที่ผ่านมา

    I have to say you explain well but not for a beginner, I already knew all these concepts and needed a recap and tbh i found your teaching a bit too quick, you need to explain slowly and in more detail