Shell sort vs Insertion sort

Поделиться
HTML-код
  • Опубликовано: 27 сен 2024

Комментарии • 322

  • @warpzone2878
    @warpzone2878 2 года назад +1611

    I like how the robots having to move the full distance between balls approximates the idea of data locality

    • @pigeonmalin2321
      @pigeonmalin2321 2 года назад +213

      Everything is smartly thought to approximate all the concepts for everyone to understand, like the robot only being able to compare 2 balls at a time to explain the fact that only humans can roughly compare lots of values (and also the fact that with merge sort the robot had to push the balls when finished sorting...)

    • @stuartallen2001
      @stuartallen2001 2 года назад +51

      I thought this was cool too but what is the real life equivalent of the rocket boosters in the second race?

    • @mablungbalrog424
      @mablungbalrog424 2 года назад +66

      @@stuartallen2001 clock speed

    • @wincentywilk7511
      @wincentywilk7511 2 года назад +82

      @@stuartallen2001 Increased cache size.

    • @thanksalot46
      @thanksalot46 2 года назад +45

      @@stuartallen2001 memory latency

  • @SuperfieldCrUn
    @SuperfieldCrUn 2 года назад +738

    While this may seem like it's a marginal improvement over insertion sort if you manage to crack the gap code, remember that we are only working with very small lists of 10 items at a time. Once you scale up the list to hundreds or thousands, it becomes a completely different ball game and things like shell sort kick insertion sort to the curb.

    • @codahighland
      @codahighland 2 года назад +47

      And shell sort is among the slower sorts in that tier, too.

    • @TheFinagle
      @TheFinagle 2 года назад +26

      Insertion sort is also being handy capped by not using an binary search to find the insertion location. On 10 it would be a rather small reduction of checks, but savings scale up significantly on the hundreds or thousands of element cases.

    • @pseudo_goose
      @pseudo_goose 2 года назад +20

      @@TheFinagle You also need to account for the complexity of actually inserting the value into the array. Binary search makes it faster for you to find the location, but once you do, you still need to shift a bunch of elements over by one position to make room. Insertion sort does that as it is walking the array.

    • @edsanville
      @edsanville 2 года назад +4

      @@TheFinagle Yeah, that's a huge handicap. It would go from O(n^2) comparisons, to O(n*log(n)) comparisons by using a binary search.

    • @TheFinagle
      @TheFinagle 2 года назад +3

      @@pseudo_goose Your right, I hadn't though of that.
      And if your data type can do easy arbitrary insertion its usually not binary search friendly.

  • @zorm_
    @zorm_ 2 года назад +197

    I love that 13 years after the first video you guys are still doing 3d animations with the exact same robot model

  • @weecl
    @weecl 2 года назад +418

    for the question at 6:16, I think it's due to shell sort spending more time moving different elements from one place to another on the rack, whereas insertion sort was almost always holding one element and comparing others to it.

    • @kennystevens2923
      @kennystevens2923 2 года назад +40

      I was thinking the same thing. You hit all the points I noticed.

    • @udiprod
      @udiprod  2 года назад +122

      Right! I just added a detailed account here: www.udiprod.com/shell-sort/#timing

    • @potatoheadpokemario1931
      @potatoheadpokemario1931 2 года назад +6

      But she'll sort had 1 extra comparison

    • @uknownada
      @uknownada 2 года назад +13

      I think that's also why the jet boosts were way more advantageous for Shell Sort. Insertion Sort didn't really utilize the rockets much, but Shell Sort necessarily has to go long distances.

  • @TheAgentAPM
    @TheAgentAPM 2 года назад +170

    I really like this lines display. Surely on Quick sort it would show at a glance how the first iteration partitions the set into two non-overlapping subsets.

    • @FinBoyXD
      @FinBoyXD 2 года назад +4

      Yeah, it definitely would, could be a cool addition for quick sort video.

  • @professorbrainstorminmemef4779
    @professorbrainstorminmemef4779 Год назад +5

    The fact that this channel is still making these late 1990s-esque animations in the 21st century really keeps me going. Love these robots!

  • @zlodevil426
    @zlodevil426 2 года назад +85

    Shell sort is one of the most interesting sorting algorithms, im glad you’re making videos about it

  • @Polygonetwo
    @Polygonetwo Год назад +8

    Having watched a decade of sorting videos as if they were released as a series over the course of a week, the robots getting jet engines is hilarious and a wild plot twist.
    Also the whole series is just well made and really shows off the differences in the algorithms.

  • @will3697
    @will3697 2 года назад +69

    I like these animations. They make the video easy and intuitive to understand.

  • @medexamtoolscom
    @medexamtoolscom 2 года назад +60

    Insertion is best with actual physical objects, when making room to insert an object in is as simple as shoving everything to the right of it further to the right, rather than with computer memory, moving it over to the next memory address for each and every individual item in memory. With my DVD collection, inserting a movie between positions 23 and 24 out of 50 means shoving all DVD cases 24 through 50 together to the right by .5 inch all at once which can be done in one swift motion of a hand. While in a computer, that means moving the item in slot 50 to slot 51... then moving the item in slot 49 into slot 50, and then moving the item in slot 48 to slot 49... all the way down to then moving the item in slot 24 to slot 25, and then and only then having the space to put the new item into slot 24.

    • @toddkes5890
      @toddkes5890 2 года назад +2

      Or if you have a linked-list, but you then need a way to perform the binary search. A linked list is where the computer grabs a random chunk of memory for the new data field, uses pointers to identify that chunk of memory, then has the predecessor and successor items re-point from each other to the new item. After the list is sorted, you then copy the elements from the linked list to the final list.
      A linked list is composed of multiple individual data elements, where each data element is composed of the data value, and two pointer values (forward and backward). Element number one has a data value, and two empty pointers. When element number two is added (assuming element number two is supposed to go after element #1), then the 'forward' pointer is reassigned to point at the location of data element number two. Element number two has its backwards pointer to point at element number one.
      From there, items number three is analyzed. Item number thre3e is discovered to fit between elements #1 and #2. So another chunk of memory is grabbed, the data value for item #2 is put in that chunk of memory, and then the pointers for element number three are updated. The #3 'forward' pointer is changed to point to element #2, and the backward pointer is changed to point at element #1. Similarly, element #1 has its forward pointer changed to point to element #3, and element #2 has its backwards pointer changed to point at element #3.
      (apologies for the words, but I need pretty pictures to better explain it)

    • @liam6550
      @liam6550 3 месяца назад

      In most cases, an array will be faster. The properties of a linked list are more suited for algorithms like the shunting yard algorithm

  • @offchan
    @offchan 2 года назад +267

    It's been over a decade since his first sorting video yet he is still interested in making sorting videos. Guys, dedicate to your friends and family like this guy dedicate to sorting algorithms.

  • @viperbeatz9189
    @viperbeatz9189 2 года назад +14

    Finally, a new udiprod video! I've been waiting for so long lol
    Good that the sorts are back

  • @ruix
    @ruix 2 года назад +2

    Almost 10 years and still making these animations. Kings

  • @KnownRed
    @KnownRed 2 года назад +7

    Babe wake up, new udiprod video just dropped

  • @henke37
    @henke37 2 года назад +26

    The sort comparisons are back! How about a video highlighting how much the result can be rigged with carefully crafted inputs?

  • @heck_fy
    @heck_fy 11 месяцев назад +2

    Wow, the coolest explanation and visualization of Shell sort I've seen! Thank you so much. So simple, short and clear explanation

  • @prateekbhurkay9376
    @prateekbhurkay9376 21 день назад +1

    Why is this so fascinating to binge watch?

  • @jonnyboi2967
    @jonnyboi2967 2 года назад +7

    I love these visual expressions and explanations of algorithms! Please more!

  • @definitelynotahorse
    @definitelynotahorse 2 года назад +2

    Really awesome to see this channel upload!

  • @danielobambelo1411
    @danielobambelo1411 2 года назад +5

    I would like to see gnome sort next, you explain sorting algorithms really well and i cant understand the difference between gnome sort and insertion sort so making a video about it would help me a lot, thanks.
    Edit: i finally understood it, but a video about it would be cool!

    • @danielobambelo1411
      @danielobambelo1411 Год назад +1

      @qwrt Actually me too, but as of now, I STILL DON´T KNOW THE DIFFERENCE OF GNOME SORT AND INSERTION SOTR, PLEASE EXPLAIN!

  • @The_upgrater
    @The_upgrater 2 года назад +1

    When the world most called for him, he returned

  • @nanchoparty
    @nanchoparty 2 года назад +2

    Boy I can't wait for you guys to explain the absolute magic that is Radix sort. I wish I understood how that thing worked.

  • @Um_Kaye
    @Um_Kaye 2 года назад +1

    I need more of this. I love coming back here from time to time to watch these guys sort!

  • @Pingwn
    @Pingwn 2 года назад +8

    Finally! Another video!

  • @aru1814
    @aru1814 2 года назад +1

    I am CS student but I'm bad at math and algorithm
    Thank you, now I can understand most of basic understanding

  • @honkhonk9089
    @honkhonk9089 2 года назад +12

    Would have been interesting to see binary insertion sort, another optimization to insertion sort

  • @ErhanTezcan
    @ErhanTezcan 2 года назад +2

    what a beauty this channel is!

  • @aringrey
    @aringrey 2 года назад +2

    so glad we are getting another sorting video

  • @jackeea_
    @jackeea_ 2 года назад +5

    Wake up babe, new udiprod video about sorting algorithms just dropped

  • @scallopy7546
    @scallopy7546 2 года назад +1

    I love this channel, and what I love the most is that even thought it's been 15 years the art style hasn't changed a bit. Wish you would upload more often

  • @advance600
    @advance600 2 года назад +1

    I know nothing about computing, but I do like those hardworking bots moving the balls.

  • @felipe9187
    @felipe9187 2 года назад +2

    I love that you keep making videos! I really like them, they're quite interesting and relaxing

  • @TheBypasser
    @TheBypasser 2 года назад +5

    While using "the jet engines" do not forget it doesn't always work like this in the real life where we have caches and bus widths. Chances are the comparisons (let's assume we just sort some 8-bit values) will take the addresses far enough to make the memory controller trigger a full-width read for every byte it needs, see ya performance :)

  • @guilhermedamasceno343
    @guilhermedamasceno343 2 года назад +1

    It's always a good thing to see a new Udiprod video.

  • @Mage_Chartreux
    @Mage_Chartreux 2 года назад +1

    Ooo, new sorting videos! I love these!

  • @Matyanson
    @Matyanson 2 года назад +2

    Thank you for continuing this series!

  • @tedvog4832
    @tedvog4832 2 года назад +1

    I had no idea you were still making videos and I am so glad you are. Keep up the good work! I love these vids

  • @smaybius
    @smaybius 2 года назад +3

    The Ciura gaps are said to be the most optimal for shell sort of no specific input length, and shell sort is preferred over quicksort in tight applications because of its small code size, but it's cache unfriendly because of why the robot lags behind in comparisons per second. One reason why the optimal gaps barely beat insertion is because its best case is O(n log n) instead of O(n)

  • @airmanon7213
    @airmanon7213 2 года назад +2

    Thanks! I didn't know how shell sort worked until I saw this video!

  • @itsohaya4096
    @itsohaya4096 2 года назад +2

    Thank you Uriprod, your videos are so helpful and intuitive!!

  • @SpencerYonce
    @SpencerYonce 2 года назад +1

    I really enjoyed this demonstration of shell and insertion sorting. Thank you so much for making these videos :)

  • @walterh2113
    @walterh2113 2 года назад +4

    Thanks once again for these extremely informative videos!

  • @pvic6959
    @pvic6959 2 года назад +1

    its always a great surprise when you upload !

  • @davidvelasco4423
    @davidvelasco4423 2 года назад +30

    STANDINGS:
    21 Quicksort
    44 Bubble Sort
    44 Merge Sort
    52 Quicksort
    39 Heap Sort
    23 Merge Sort
    30 Insertion Sort
    44 Bubble Sort
    36 Bubble Sort
    81 Stooge Sort
    27 Stooge Sort
    605 Bogosort
    30 Insertion Sort
    31 Shell Sort

    • @davidvelasco4423
      @davidvelasco4423 2 года назад +5

      Where is Shell(9,6,1) Sort? It's not a proper sort, just a modification of Shell Sort.

    • @okboing
      @okboing 2 года назад +3

      I don't get what's going on here

    • @davidvelasco4423
      @davidvelasco4423 2 года назад +3

      Those are the current standings of all the sorting algorithms featured so far.

    • @affegpus4195
      @affegpus4195 2 года назад +2

      Its the same list?

    • @davidvelasco4423
      @davidvelasco4423 2 года назад +1

      @@affegpus4195 I don't remember.

  • @epsilonthedragon1249
    @epsilonthedragon1249 2 года назад

    I never thought I'd understand Shell sort. Thank you

  • @jamierbb
    @jamierbb 2 года назад +1

    I love these robot dudes so much. 24 ball race when

  • @nguyentan9359
    @nguyentan9359 11 месяцев назад +1

    Hey this is actually really easy to understand

  • @ATuber4720
    @ATuber4720 Год назад +1

    These videos r kinda helpful to learn sorts

  • @mahxylim7983
    @mahxylim7983 2 года назад

    Yay! Another sorting video! We sub for these and we will always come back no matter how long!

  • @owenpatton4010
    @owenpatton4010 2 года назад +1

    i have wanted more of these so bad

  • @NPCsz
    @NPCsz 2 года назад +1

    Other people: Watching Netflix Stranger Things 4
    Me: Watching two robots sorting color balls

  • @arandomuserofinternet
    @arandomuserofinternet 2 года назад +2

    Finally, a new algorithm! Could you please do a video on Cocktail Shaker Sort, or maybe Gravity Sort?

  • @ghostpoint
    @ghostpoint 2 года назад +3

    yoooo new sorting method video just dropped

  • @TheLameWitch
    @TheLameWitch Год назад +1

    HUGE UPSET!! LETS GO INSERTION SORT

    • @TheLameWitch
      @TheLameWitch Год назад +2

      Shell sort training arc went crazy though

  • @Akronymus_
    @Akronymus_ 2 года назад +6

    Could we get some comparisons on MUCH larger sets? I feel like some only truly shine when the amount of data grows.

    • @typhoonzebra
      @typhoonzebra 2 года назад +2

      Like Bogo sort

    • @Demopans5990
      @Demopans5990 2 года назад

      Or std::sort

    • @musicexams5258
      @musicexams5258 2 года назад +2

      @@typhoonzebra there's a Bogosort video
      it's hilarious
      it's 40 minutes long, and 35 of it is literally waiting for Bogosort to actually finish randomizing

    • @typhoonzebra
      @typhoonzebra 2 года назад

      @@musicexams5258 Just came back from that. Glad to see they have recognised the ultimate sorting method.

  • @Leeki85
    @Leeki85 2 года назад +2

    You should do a comparison on bigger lists. With 100+ elements shell sort will be significantly faster than simple insertion. Actually the biggest reason why Quick, Merge or Shell Sort are much faster is because they can easily switch elements that are far from each other. Comb sort was developed with this idea in mind. Comb sort is a simple bubble, that uses sublists with wide gaps.
    However Insertion Sort works really well on small or almost sorted lists, where each element has to move just a few spaces. This is why hybrid sorts often use Insertion sort as a last step on almost sorted list, because it's the fastest way.

    • @Demopans5990
      @Demopans5990 2 года назад

      ruclips.net/video/8MsTNqK3o_w/видео.html

  • @phms6364
    @phms6364 Год назад +1

    Amazing! Very well explained

  • @Luaksz
    @Luaksz 2 года назад +2

    I remember watching these in high school! I don’t know if you thought about visualizing quantum algorithms, and most quantum sorts don’t outperform classical sorts, but if you could figure out how to visualize Grover’s algorithm or Shor’s that’d be so cool!

  • @SuperDZ555
    @SuperDZ555 2 года назад +3

    Can you do bozosort? It's like bogosort but instead of shuffling the entire thing it shuffles two random parts of the thing

  • @keithplayzstuff2424
    @keithplayzstuff2424 2 года назад +18

    Hello! What is the best way to contact you, because I have a question about your work in general. I have tried email in the past and failed.

    • @udiprod
      @udiprod  2 года назад +16

      I replied you email just now, I think. Sorry I must have missed it.

    • @keithplayzstuff2424
      @keithplayzstuff2424 2 года назад +2

      @@udiprod Thank you, I have replied to your reply.

  • @infradragon
    @infradragon 2 года назад +2

    this is the best channel

  • @blacklight683
    @blacklight683 4 месяца назад +1

    "This is a sorting algorithm, it loses. So lets give it alot of extra advantages and see it win"

  • @dansinn
    @dansinn 2 года назад +2

    I Appreciate this video

  • @KevinSiebert
    @KevinSiebert 2 года назад +2

    New sorting algorithm dropped. All my friendsove sorting algorithms.

  • @Eternitycomplex
    @Eternitycomplex Год назад +1

    The advantage of shell sort over insertion sort grows substantially as the size of the set rises.

  • @sushikazuki5945
    @sushikazuki5945 2 года назад +1

    Babe wake up new udiprod sorting video

  • @NiGHTcapD
    @NiGHTcapD 2 года назад

    I eventually want to see a large competition of all sorts. Not only to see all the different screens of each sort all together, but a "look how far we've come" from slower but vaguely effective sorts to...shell and beyond.

  • @hjewkes
    @hjewkes 2 года назад +4

    Id love to see how you tackle Sleep sort 😅

  • @dragonmanover9000
    @dragonmanover9000 Год назад +1

    Great sorting explanation as always! If you guys take requests, can you show the way a Circle Sort acts? Or a Comb Sort? Either one would be really fun to see.

  • @BusterBrown1217
    @BusterBrown1217 2 года назад +2

    Would be interesting to see binary insertion sort. Of course, the improvement would be very minor on such a small set, but it would still be interesting.

  • @legendgames128
    @legendgames128 Год назад +1

    Never had I felt this tense between two robots in a sorting competition. Shell sort should work better in theory due to moving elements closer and closer, but the time it took moving and the lack of optimization made me nervous in this match.

  • @26-dimesional_Cube
    @26-dimesional_Cube 2 года назад

    I have a sorting algorithm that idk its name. Here's the algorithm:
    + Step 1: Called "gap" = length(array) - 1
    + Step 2: Assign k = 0
    + Step 3: If (gap + k) is larger than or equal to length(array) then decrement gap and go to step 2.
    + Step 4: Swap the element at (k) and the element at (gap + k)
    + Step 5: Increment k. Go to step 3.

  • @CNWPlayer
    @CNWPlayer 2 года назад +1

    Yes a new video!

  • @TheTunemaker4130
    @TheTunemaker4130 2 года назад +2

    I have some ideas for future episodes.
    Slow Sort vs Stooge Sort: Who Is Slower?
    Bozo Sort vs Bogo Sort: Who Is Slower?
    Comb Sort vs Shell Sort: What's The Difference
    Bitonic Sort vs Merge Sort: What's The Difference
    Radix LSD Sort vs Quick Sort: What's The Difference
    Cocktail Shaker Sort vs Bubble Sort: Who Is Faster?
    Tim Sort vs Cycle Sort: Who Is Faster?
    Radix MSD Sort vs Quick Sort: What's The Difference?
    Odd-Even Sort vs WikiSort: Who Is Faster?

  • @mikethewhizz5085
    @mikethewhizz5085 Год назад +1

    I think the lag in comparisons per second has to do with the fact that insertion sort does most of its comparisons with one ball at a time, and so it only has to pick up and put down one ball at a time. Shell sort has more putting down and picking up of two

  • @crazyfartman9000
    @crazyfartman9000 2 года назад +1

    wake up babe. new uniprod video just dropped.

  • @Mintice
    @Mintice 2 года назад +1

    Love the animation. Keep up the good work.

  • @yonatanbeer3475
    @yonatanbeer3475 2 года назад +14

    In the last shell sort step, is each ball guaranteed to be either in its correct position or next to it? Or can it be further away?

    • @udiprod
      @udiprod  2 года назад +23

      Not in the gap sequences used in the video, but for some gap sequences it's true. For example a gap sequence of 3-2-1 guarantees it. Other gap sequence guarantee larger bounds. I'll soon post more details on that.

    • @Bootleg_Jones
      @Bootleg_Jones 2 года назад +1

      If the second to last gap size is n (assuming the last gap size is 1) then I'm pretty sure each element is guaranteed to be n-1 positions away from it's final position at most. Assuming my math is good, I feel like you could improve the worst case speed of the algorithm pretty significantly by having it move on to the next element after n-1 comparisons since the nth comparison would be guaranteed to show the two elements don't need to swap. You might even be able to use a similar rule for every sub-sort after the first.

  • @someidot9003
    @someidot9003 2 года назад +1

    Honestly this editing was better imo

  • @lolermosskoss1834
    @lolermosskoss1834 Год назад +1

    Now I want to see shell vs merge sort

  • @agenttatsu
    @agenttatsu 2 года назад

    i love the classic solution of "lets add jet boosters!" when something isnt fast enough

  • @abhinashjena216
    @abhinashjena216 11 месяцев назад +1

    So good animation 👌 😍

  • @Confused_Rock
    @Confused_Rock 2 года назад +1

    This is a blessing

  • @tetral_6844
    @tetral_6844 Год назад

    Another reason shell sort was slower was because it had to check every pair at the end even though it was only a few off, while insertion sort could be confident it was finished as soon as it placed the last ball.

  • @patolol3091
    @patolol3091 2 года назад +1

    yay theyre back

  • @charlieferme5274
    @charlieferme5274 2 года назад +2

    Oh this is amaaaaziingg!

  • @Green24152
    @Green24152 2 года назад +1

    Oh hey, you're still alive!

  • @ib5916
    @ib5916 2 года назад +1

    omg theyre back

  • @pavlikshimko7940
    @pavlikshimko7940 9 месяцев назад

    my idea for Radix sort
    each ball has a number that can be told only from looking at it,
    each ball is sorted into 10 boxes depending on the least significant digit, then the 10 boxes have elements taken out and put in order, then repeat for the next digit
    for the comparisons to make it more fair they should have bigger numbers, because the formula for radix complexity has no squares or logs such as 129

  • @noobie8544
    @noobie8544 9 месяцев назад +2

    I wonder how Radix LSD out of place sorting would be like

  • @SteveMacSticky
    @SteveMacSticky 2 года назад +1

    what a nice voice 😊

  • @RGC_animation
    @RGC_animation 2 года назад +1

    12 years later and udiprod is still comparing sorting mechanisms.

  • @mataric_yt
    @mataric_yt 2 года назад +1

    Interesting, so shell sort is basically some weird combination of insertion sort and quick sort.

  • @DonVigaDeFierro
    @DonVigaDeFierro 8 месяцев назад +1

    I wish you could show the Stalin sort: Eliminate from the list any unsorted element.
    If you don't care about data preservation, it's the only algorithm with a time t that grows linear with the size list n, and you'll always end with a sorted list.

  • @cmyk8964
    @cmyk8964 2 года назад

    I feel like just a 5-second snippet of these robots sorting 100 items would have been a good visual representation that Shell Sort scales way better.

  • @NOT_A_ROBOT
    @NOT_A_ROBOT 2 года назад +1

    suggestion: 4 ball sorting match between bogosort and bogobogosort

    • @EriksGarbage
      @EriksGarbage 2 года назад

      what the hell is bogobogosort?

    • @NOT_A_ROBOT
      @NOT_A_ROBOT 2 года назад

      @@EriksGarbage you can search it up lol
      i don't really understand it either

  • @670839245
    @670839245 2 года назад +2

    In those robot sort matches, the robots take time performing certain actions like moving left and right a lot in shell sort, or pushing balls down the shelf in merge sort. How much time would an actual modern computer perform each operation in a sort algorithm?

    • @murilovieira2785
      @murilovieira2785 2 года назад

      The time will depends on the number of comparisons

    • @Demopans5990
      @Demopans5990 2 года назад +1

      Practically instant for array data structures, linear time for linked node structures

  • @bradweir5579
    @bradweir5579 2 года назад +2

    What about parallelism. Surely you can sort multiple list subsets simultaneously.

  • @antrix2107
    @antrix2107 Год назад +1

    You should do Gnome sort!

  • @goldho22
    @goldho22 Год назад +1

    idea: insertion sort vs radix sort