The first video I watch on your channel, subscribed in 24 seconds because you started sharing value quickly without a long unnecessary intro.
@rodoxsta5 ай бұрын
Same here, but I subscribed after reading your comment!
@FernandoSLima3 ай бұрын
same
@goodshorts2 ай бұрын
Agreed
@softcolly87537 ай бұрын
The only time I have needed to implement a sort algorithm in 21 years as a software developer was for interviews or university exams. Never needed a graph algorithm at all. These are all coded into libraries these days, though it's somewhat useful to understand them, understanding how to index a database properly (applying them) is far more useful.
@gustavofagundes89947 ай бұрын
exactly
@lukaszantoniak90466 ай бұрын
agree
@drakkor10006 ай бұрын
amen
@cbc7006 ай бұрын
This was quite a nice video, especially the visuals. However, I agree with the sentiments of this thread. In three decades of coding, I've only had to implement a sort algorithm a handful of times. So rare in fact, I can't remember the last. Interesting to understand, but softcolly is right -- mostly seen in school and interviews. Your delivery is quite good -- going to check out your other vids.
@joannehart96246 ай бұрын
Back in the late 70s when I started coding, we often needed to implement sorting algorithms into our code. Sometimes because the operating system did not have a system sort, and other times because the overhead of setting up the code to use the system sort made it easier to just code a sort into the program. Back then CPU and memory were at a premium, so we had rules such as if the program needed to search through a table of more than 100 entries, the program had to sort the table then preform a binary search. Fun times to look back on. That said, those approaches have stuck with me throughout my career and oft times helped me fix resource heavy applications that wouldn't finish within the time frame demanded by business. 🙂
@lukashuth97307 ай бұрын
Really nice and informative video while still being short without "unnecessary" information, i really liked it
@yourma70557 ай бұрын
True
@nitheeshraajar3937 ай бұрын
Just want to let you know @7:35, you say Binary search is O(log n) but on the chart its pointing to O(n Log n). Very nice video 👍
@jonarielm7 ай бұрын
nlogn if data is unsorted i guess.
@nitheeshraajar3937 ай бұрын
@@jonarielm then yup nlogn to sort then logn to search
@lagmaker7 ай бұрын
@@jonarielm you cant use binary search on unsorted array
@deraxelturrelkeign7 ай бұрын
@@jonarielm Binary search couldn't function (effectively) on unsorted data without sorting first. An unmodified Binary search will either find what its looking for in O(log(n)) like a normal binary search (the algorithm just happens to go the right direction), potentially falsely return -1 or I believe get stuck in an infinite loop.
@murilourso7 ай бұрын
He even said "for sorted arrays"
@OGNord7 ай бұрын
Dude this was gold. I’m currently on week 3 of CS50s course and I’m in love with C and programming so far. This is a very succinct explanation of each section! Thank you very much
@thobiaslarsen83367 ай бұрын
Finally someone who is happy with C and doesn't cry 😃 Thank you for showing hope 🙏
@zoeherriot7 ай бұрын
@@thobiaslarsen8336 C rocks. Great language.
@KaneryU7 ай бұрын
idk why this comment made me so happy you go man! (or girl, lol)
@thobiaslarsen83367 ай бұрын
Probably because there is a lot of negativity in the field right now, so its very refreshing to see something actually positive 😂
@youMatterItDoesGetBetter7 ай бұрын
C is cool.
@User.Joshua6 ай бұрын
You certainly have a knack for explaining things in an easily digestible way. Thanks.
@wille49867 ай бұрын
Your enthusiasm is infectious and reassuring - knowing someone else finds this all just as fascinating to dive into but presented with the quality as you do is a privilege to watch. Excellent video and I can't wait to see more! Thank you!
@JustDevInc7 ай бұрын
This was very nicely done. The visuals and your commentary allowed me to understand the algorithms in ways that previous videos I’ve watched haven’t. They’d either be too basic of an overview to get what’s happening, or too code based without visual cues to help you understand. This was a perfect balance of simplicity and depth. Great work!
@BillyLongshot6 ай бұрын
love the intro and general framing of this video: no glam dreams about becoming a software engineer but the actual nitty-gritty that actually makes you one
@Kamuisakeu6 ай бұрын
The quick and concise video with visual representation together with the code sample was right on the spot! Cheers to that and give us more!
@aggumbi7 ай бұрын
Wonderful video. As a scientist going through a programming journey, the way you show the visual and explain the code (with the highlights, etc...) is extremely helpful. More algorithm videos please! ❤
@TubeAccount-b1f27 күн бұрын
Channel is gold, also just discovered it.. look my dev stint is sitting around 24 years 'ish.. I've never had to implement these algo's in the banking industry, however such a pleasure listening, learning and seeing true passion at play. Well done, subscribed and will keep popping in every now and again.
@wolfmansaw6 ай бұрын
I've been coding for 55+ years and I'm so glad I found you today! Great stuff!!! Right into the code and no fluff! I think you define what it means to be a programmer!!!👍
@jynx0riZ0r7 ай бұрын
Best explanation of dynamic programming ever. Thank you. ;-)
@Andron4iKTV7 ай бұрын
You made a mistake when show to us time complexity of binary search. You put finger emoji on O(n log n) insead of O (log n).
@fknight7 ай бұрын
Good catch! Thanks for pointing that out.
@TT-hi7lp7 ай бұрын
Was just about to comment about this
@alexrubio95077 ай бұрын
@@TT-hi7lphahaha same here
@OGMann6 ай бұрын
Oh yep. Everyone was.
@ademromdhane12716 ай бұрын
Amazing how easy you can simplify this hard algorithms visually , good job i really like it
@ongeziwejunior46562 ай бұрын
man, you explain these very well. still a newbie in DSA and trying to get my way around them and so far, from you i'm understanding them a bit better💯. I'd actually love to hear more from you.
@cryptonative25 күн бұрын
I like to categorize algorithms with inserting (eg. btree, BST), searching (eg. binary search, dijkstra), editing (eg. bubble sort or merge sort) and deleting (similar to inserting) That's all you can do with data
@emmanuelkimutai-uo2fx7 ай бұрын
00:02 Three types of algorithms every programmer needs to know 01:35 Sorting algorithms rearrange elements in a certain order to organize data for easier use and analysis. 03:14 Merge sort is an efficient and stable sorting algorithm. 04:57 Sorting algorithms are fundamental in computer science and have various real-world applications. 06:33 Binary search is an efficient algorithm that repeatedly divides the search interval in half. 08:10 Algorithms are crucial for analyzing relationships in graphs 09:49 DFS and BFS are fundamental in understanding algorithms 11:30 A* algorithm is a sophisticated pathfinding algorithm used to find the shortest path between two points. Crafted by Merlin AI.
@rogueronin10107 ай бұрын
Make a new playlist for all algorithms in depth videos. Thanks for the bite size explanation.
@techfixer15436 ай бұрын
Thank you! Your lucid explanations of these algos shows your in depth knowledge, and the accompanying graphs are fantastic and hit a home run in visually expressing the underlying concepts. And you keep the viewer engaged with your peppering of being flawlessly snarky. I had to rewatch the part on the Dijkstra's algorithm to let it sink into my ever evolving brain in "thinking and reasoning" mode. Fantisic vid overall!
@edattacksАй бұрын
I like the visual for A* algorithm being how lightning connects to an upward streamer
@gregoryhost51887 ай бұрын
This was really amazing and great timing, I'm currently struggling with algorithms especially trying to figure out where and how exactly to use them.
@daemon_zero2 ай бұрын
Straight to the point, great graphics do illustrate, and as a bonus, no trademark "tech influencer" neon on background. Subscribed, absolutely.
@guitarman8136 ай бұрын
One of the best videos I've seen for an introduction and basic explanation of important algorithms in computer science and programming. Awesome job! 👏
@cedrickmccallon6 ай бұрын
Almost 20 years into the game and I wish my CS teachers would have explained these algorithms this well. Great video.
@hunterlewis55666 ай бұрын
I'm fairly new to computer science and programming and I love this and would love to see more of this, you got my support and vote of confidence!
@ZiaCodes7 ай бұрын
Hey hey, Your talking style is amazing! The way you explained the algorithms is fabulous! I love it!
@InconspicuousChap6 ай бұрын
Ιllustration of the algorithms in a language for non-programmers is quite symbolic. The target audience don't even realize how far is such a keyword-based memorizing of popular concepts from actual learning and understanding stuff.
@omargoodman29997 ай бұрын
What about the "really bad" sorting algorithms? Like "Stalin Sort": Step through the list one item at a time and, if the item is out of order, delete it. This results in a sorted list at the end [may result in some lost data]. Or "Miracle Sort": Step through the list and check if the items are in sorted order. If they are, return the list of sorted items. If not, wait a designated amount of time, recur function to see if the list has miraculously become sorted. Continue recursion until a sorted list is found.
@JasonWelch3 ай бұрын
I love this video because it introduces people in a rather gentle way to these topics. I feel like I could write an entire book on my experience as a programmer at this point (not that I think anyone would care to read it). I've been coding for over 25 years since I was a teenager and got my first dev job at 20. Back then I was super arrogant until I began working with people far more skilled and experienced than me, and so I studied CS for several years. However, I think the problem back then wasn't so much a lack of willingness, but simply a lack of awareness. I didn't know what I didn't know. I remember struggling to understand BSP trees, and then it became obvious to me later why: I didn't even know about binary search! Videos such as this one are immensely valuable for those early on in their programming journey.
@flpflpflp7 ай бұрын
Hey man, I've been a subscriber for a few years now. I think this is the content I liked the most. Keep up the great work!
@Radio_N_Casa7 ай бұрын
Truly enjoyed this, simple enough and yet leaves me wanting more. Well done
@ringringlord6 ай бұрын
very straight to the point and zero clutter
@Dwafford017 ай бұрын
I loved this video, I just want to say I finished my BSc it with programming specialisation in the end of 2020. Now for the first time I'm being treated as a developer by the company I'm working for. It's both exciting and nervous, but with videos like these I think I will be okay.
@GideonBryceTan-od4tq7 ай бұрын
Well explained and condensed -- it's like crash course for algorithms. Great stuff!
@markpalma17617 ай бұрын
showing which part of the code the is being ran live with the animation makes learning this much easier
@wyohman006 ай бұрын
I wish every creator on KZfaq would watch your videos! To the point with no baloney. Thanks!
@jeffreyphipps15073 ай бұрын
I think this is essential for a more important reason. A programmer may never use any of these directly, but the knowledge that these mechanics imprint can be used in other places. I had an instructor once who wanted students to make a faster sort. Spending the time to do that wasn't worth it - I already knew seven sort methods. I dropped the course and told him why. I later retook the course with another instructor. What I didn't learn the first time was that I could use methodologies from three sorts to leverage different data structures that I had never seen before. You may never know that until an instructor tells you that. The first one didn't, the second one did. The difference was that the first instructor was also a math instructor and taught theory. The second was also a systems analyst instructor used to teaching OS design. His POV was different. I learned something else from that experience - I later became an instructor, and I had learned that not everybody's background/experience is the same. When answering a question, it's a good idea to know what the student's experiences are.
@letsfly6626 ай бұрын
Break down the algorithms and data structures you think are necessary bro, these things are timeless!
@max_masterius6 ай бұрын
It's so visual! I've got the motivation to look deeper. It's a long time after my university that I actually touched this topic.
@CauseItsNotMidnight5 ай бұрын
More of this. Visual representation is stimulating, explanation is clear, analogies could be slightly more engaging, but are effective as is.
@matias-dev7 ай бұрын
Loved the video, straight to the point with the necessary information, i had this kind of algorithms shown to me in programming classes in college and i always dread how they were shown, sometimes people overcomplicate the initial step of a bigger problem (probably not in a badly intentioned manner), i think your video is a great way to get started on these topics!
@ericajcruz7 ай бұрын
Great video. More "boring" algorithm videos please! Thank you for posting this.
@joaquinpickelny89584 ай бұрын
I really hope you are making money off these videos (this is the first one I've seen), because every single cent would be well deserved. From the content itself to the visual examples and code, not to mention how easily you explain these concepts in a complete yet straightforward way. It took me maybe 13 seconds to subscribe.
@TampaCEO6 ай бұрын
Outstanding video. I've been a professional developer for over 30 years and I have to say that this video is by far the best I've come across on KZfaq. Here's why: 1. Outstanding graphics. That cannot be understated. 2. Outstanding explanations. 3. You get right to the point (no wasted conversation). Consider me a new subscriber (to add to your half million or so). Congratulations on the success of your channel.
@samiamgrnegsnhamnonftercan2ham4 ай бұрын
Great vid, would love to see more on algorithms!
@zakuguriin45216 ай бұрын
I built an array sorting algorithm visualizer with some classmates in programming school for our Javascript Team project. Watching it sort huge arrays was so addicting and mesmerizing.
@Nynxxx7 ай бұрын
I would love for you to do more videos on this stuff as I am about to finish my Comp Sci degree, and I am currently struggling with algorithms. I have not been the best with math in the past, and I just feel like there is something about algorithms I am missing. It just isn't clicking. I understand what they are and what they do, but if I get asked a simple question about solving what time complexity something is, I completely fumble, and just don't even know where to start.
@youMatterItDoesGetBetter7 ай бұрын
Loveeee that you’re getting that degree. People talk down on degrees nowadays, but they really do get you in the door.
@alexrubio95077 ай бұрын
Man I wanna say that you're so talented at making these videos. It is so clear that you love doing them. Please keep posting, you re a rockstar!
@francisharrington31554 ай бұрын
Forrest, your videos are damn near perfect. I've watched 5 in a row and subscribed to your channel and the newsletter. Probably gonna pull the trigger on the notion studious next.
@fknight4 ай бұрын
I appreciate that! Hearing this really means a lot
@slayergaming54216 ай бұрын
Great video! I really like the visual depiction of Dijkstra's and A*.
@alexaneals81947 ай бұрын
I enjoyed your presentation. I will say that many times insertion sort is used by quick sort once the array is partitioned into small portions like < 10 elements. Also, these are in memory sorts, so if your accessing the disks frequently then you may not want to use these algorithms. Same goes for binary search. I don’t know if you have already covered it, but knowing how to code parsers can be valuable. I have lost count of how many parsers, I have had to code in my professional career.
@krzysztofs3t5327 ай бұрын
Wow man! I'm a mathematics major, working as a React developer and this video rekindled my pursuit for pure programing, not just learning another library! Thank you very much! Immediately sub!
@dougpark10256 ай бұрын
The O(n) postman or bucket sort deserves a mention. Very useful when you have a limited number of integral values (like zip codes). I have used this in a few cases where I was dealing with a very large number of items that could be placed into buckets or ranges. Another good improvement to sorting is to take advantage of multiple cores. A lot of sorting algorithms are fairly easily decomposed into parallel operations.
@MihowillАй бұрын
Nice to see the Primagean brother being great programmer as well.
@adnelfigueroa12276 ай бұрын
Awesome video! Loved your explanation and the fact that you incorporate funny comments. Exited to see more.
@alialibaba66726 ай бұрын
Hey Forest, great wor and marvelous graphical representation. Please continue
@BetweenTheBorders6 ай бұрын
I'll be honest, I almost didn't click on this video, bur I thought "you know, as a dangerous amateur, I should see what I should know." And I guess since I've implemented A* before, I'm not too far off the mark. Good to have some sort and search concepts in the toolbox for future research. Well presented!
@skilz80986 ай бұрын
When working with 3D Graphics and a Scene Graph Hierarchy for world object placements and collision detection systems, one of the more generalized and efficient data structures - algorithms is the BSP Trees and its variants. Binary Space Partitioning Trees are very powerful. Related to them are also the Quadtrees and Octrees. Another type of algorithm not mentioned here which is a bit different than your conventional sorting or searching algorithms is your transformation algorithms. I'm not necessarily referring to transformations as physical translations within basic kinematic physics such as horizontal - vertical translations, rotations, and scaling perse but more on the lines of transforming data or input singles from one domain to another. One of my favorite algorithms especially with in analysis is the Fast Fourier Transform and its inverse. A few other noteworthy algorithms are ODEs (Ordinary Differential Equation solvers), Integrators, regressions models (linear, quadratic, cubic, etc.) and Interpolations. Other than that, this is great video for everything you covered is right on point! We always have to consider both the time and space complexities of various algorithms, containers, and datasets knowing the various tradeoffs between them. The only other thing that would be missing from this video is how different containers and algorithms are affected by locality especially when considering cache coherency and perhaps branch predicting, page boundaries and alignment as they can very well affect the performance and efficiency of various algorithms.
@basildaoust28216 ай бұрын
Framing a house is not a big deal if you actually know how to use a hammer, but I will admit I have found nail guns very handy when you have extremely limited space. I used one for a small area when I was putting the ceiling in my basement, the place I used it was when I build the framing for around the heating ducks, I could keep things close to the ducks but had very little to no room to swing a hammer, but enough room to get in a nailgun and pull the trigger. It was quick, fast and really easy, one of the best rentals ever.
@SN-ed7wi5 ай бұрын
Excellent vid for all the reasons stated by others, well done. Too bad there are some who think the info is not practical today. The fundamentals you learn by coding even one of the efficient sorting algorithms will stay with you forever.
@escapist8186 ай бұрын
Oh man I would love a deep dive video on hashing algorithms, your stuff is great!
@JevVan6 ай бұрын
LOL Bubble Sort! My first sorting algorithm that I learned in HS in the 80s! I thought it was awesome! Thanks for the fun video.
@chrisnortonjr7 ай бұрын
Yes, make more videos like this. I’m currently learning DSA
@forsmanos5 ай бұрын
Very nice graphics for your examples. Nice enough, i almost felt like i was watching an ad.
@fishwrapper55096 ай бұрын
even being a retired engineer, I like stuff like this. keeps me thinking.
@bryanbisimotopinas3455 ай бұрын
Some comments for visual accuracy e.g. in 3:25 insertion sort, the element j is not really shifted right, arr[j] still contains the reference it's just that `arr[j+1] = arr[j]`copies the reference to arr[j+1]. I think it would be better to keep the two duplicate values then just overlap key to to arr[j] to keep visual consistency. Also, i find it helpful if i can see the values of i and j when stepping over each line of code.
@natalkaskus65474 ай бұрын
wtf ur explanation is unbelievable, so on point
@twisthard6 ай бұрын
Nicely done and presented! A couple of these were not presented in my CS Data Structures and Algorithms course, and as such this was a great view into those. One algorithm I never really got the hang of was hash tables. Now you have me thinking about that again. Well done!
@grassifuentes7 ай бұрын
This is excellent. I took algorithm designs a year ago and this refreshed my memory by a lot and made me want to look into it for practicing again. Thank you!🙏🏽
@davidrichman21176 ай бұрын
Thank you, Forrest Knight! Just review for me, but I wanted to say that you have a wonderful down to earth way of presenting that I really appreciated. Keep up the good work!
@whophukenfarted6 ай бұрын
Amazing video! I can’t wait until I can develop this type of understanding of the different algorithms! Thank you for sharing this! 🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥👏👏👏👏
@CTLanni6 ай бұрын
I always liked the Heap Sort. I thought it was brilliant and plenty fast for me. It served me well for about 40 years. I also liked the binary search.
@surferbum6187 ай бұрын
Thank you for making this. Yes please, more of these!
@kfletcher20056 ай бұрын
I've never had to implement any sorting algorithm at a low level like that in 30 plus yrs. Usually there's some library that already exists for sorting, but In the java world, the jdk has built in sorting via collections api. You can get a little fancy with it through embedded lamda's when you need to sort by primary, secondary & tertiary attributes. There's probably half dozen ways to skin that cat. So, I haven't had to do any low level sorting like that unless for a college exam or an interview. Same deal with dijkstra's method. I had a little downtime a few years back and was doing all these hacker rank exercises covering graph theory for the heck of it (and it was interesting), and it turns out an interview popped up where I needed to solve the optimal distance between two points. I used Dijkstra's algorithm and aced the interview and got the job, but never used it again. hahah
@mavrosyvannah6 ай бұрын
I subbed, I liked, and recon this, that at 5:40 YT cut you off and inserted a 3 minute get rich quick feeling commercial.
@incognitiveincognito5 ай бұрын
Wish you where my data structures proffesor, then I might not of had to retake the class so many times haha. Amazing video, can't wait to see your other stuff
@barcactu10326 ай бұрын
Looking forward for an algorithms series ;)
@sayo93947 ай бұрын
it's fun watching your videos as a senior engineer who just uses STL's std::sort too much without putting much thought into its algorithm! i tend to think more about data structures rather than algorithms!
@YuriIdrisov6 ай бұрын
Hm. For the second time someone from the screen tells me his name is Forrest, and for the secon time, the value of the content is great. Thanks!
@dereklewis5467 ай бұрын
HEY, I LEARN C IN 1980'S ( THE DR - KR EDTITION ) I WAS DOING THAT SORTING AND ALGORITHMS, IM SO HAPPY YOU HAVE THIS VIDEO, MAKES IT MUST EASY TO GRASP, ( TO ME IS Ai & ML )
@popinjayackroyd45267 ай бұрын
Interesting stuff. I am just a coding hobbyist, but I found this very useful.
@alivaliev51527 ай бұрын
Right when I needed it most, this gold! Keep on this!
@electronron16 ай бұрын
I use the COMB sort for most of my applications. It's code is similar to the bubble sort but sorts much faster.
@Viafro6127 ай бұрын
As a developer, i always suscribe to a better devs channel. Well done
@vishnum48527 ай бұрын
Great videos. Liking this nitty gritty concepts which are not popular in yt We need more videos like this man..
@techsalesandmore36496 ай бұрын
never seen your channel before. Totally loving your animations!!!
@EagleHunt7 ай бұрын
Make more videos like this. Informative content is what I’m here for
@zushiba6 ай бұрын
I really wanted to focus on the algorithms presented in this video, but was distracted by the dudes glorious hair. I'm jealous of your hair dude.
@aaronmorgan44666 ай бұрын
Really great explanations, thank you. This highlights where I came unstuck in AoC '23 quite well :)
@christianmboula89234 ай бұрын
Superb content, excellent delivery! where were you when I was taking DS a few decades ago!
@ChwisKay5 ай бұрын
Thanks Forrest. Now every time I run an algorithm i think to myself: "It runs Forrest, it runs!" Thanks :D
@skyname88706 ай бұрын
Bro, you're the best! Thank you so much for your video! No way of me missing the subscribe button!
@stevemacmanu6 ай бұрын
I don't agree with you saying these videos don't make you dream about being a software engineer They're making me dream and that's why I just subscribed Please make more videos like this, I love them and they also shape your thinking as a computer scientist Thank you very much
@preludeofme7 ай бұрын
Keep these types coming (but also don't stop the long form too 😊)
@reikooters7 ай бұрын
The algorithms were well explained, but something that I don't think was quite made clear enough in the video (it was kind of stated with the hammer/nailgun analogy, but not fully explained) is that Big O Notation isn't a measure of speed - it's a measure of scaling, meaning how much slower the algorithm becomes as the size of the collection increases. Also, the more complex the algorithm, the more targeted toward larger scale it typically is. For example, when searching a small collection, a for loop will often be faster than a dictionary look up, because generating the hash to use to perform the lookup and using it to find the item can take longer than just checking every element. There can be other problematic patterns which might not be so obvious to the programmer, such as if you call a function to check if a key is in the dictionary, and if so, call a function to retrieve the value, then you've just caused two lookups which halves the performance. As an aside, Bjarne Stroustrup's talk "Why you should avoid Linked Lists" is an interesting related watch.
@omargoodman29997 ай бұрын
It's kinda like how there are little math "shortcuts" to tell if a number is divisible by some other number: If the last digit is divisible by two, then the whole thing is divisible by two. If the sum of digits is divisible by 3, the whole thing is divisible by 3, etc. But while there's _technically_ a trick for 7... it's very cumbersome and convoluted to work out and unless the number is *stupid huge* you're probably better just testing it by trying to divide by 7 and checking if there's a remainder. For the record, the "Divisibility Rule of 7" is: If for then absolute value of an integer (x) the difference between 2× the "units" digit of the number [2*mod(x,10)] and the remaining part of the number [floor(x/10)] is equal to 7^n where n is a non-negative integer (N^0); then the number represented by "x" is divisible by 7.
@indecisive.m7 ай бұрын
This is genuinely so confusing for me but also incredibly interesting
@fackyoutube84527 ай бұрын
It’s not take a course on it, it’s not as hard as you think. If you ignore the coding part and make it intuitive it will start making sense. Then think about what each line of code does and how if you remove that line of code, what specifically happens that causes the error. If you can’t explain a concept inside and out like that, then you truly didn’t understand it yet.
@karsh0016 ай бұрын
Learning these algorithms is part of the profession. If you don't know them you are not a programmer. On a side note: Its great to know when starting out. You never know if you end up somewhere where a library is disallowed and you really need to sort a data set.