Lab 3: Sort
Lab3 Page: https://cs50.harvard.edu/x/2023/labs/3/
CS50 Study Group:677535709(QQ Group)
Background 🧐
Recall from lecture that we saw a few algorithms for sorting a sequence of numbers: selection sort, bubble sort, and merge sort.
- Selection sort iterates through the unsorted portions of a list, selecting the smallest element each time and moving it to its correct location.
- Bubble sort compares pairs of adjacent values one at a time and swaps them if they are in the incorrect order. This continues until the list is sorted.
- Merge sort recursively divides the list into two repeatedly and then merges the smaller lists back into a larger one in the correct order.
Getting Started 🍉
Open VS Code.
Start by clicking inside your terminal window, then execute cd by itself. You should find that its “prompt” resembles the below.
$Click inside of that terminal window and then execute
wget https://cdn.cs50.net/2022/fall/labs/3/sort.zipfollowed by Enter in order to download a ZIP called sort.zip in your codespace. Take care not to overlook the space between wget and the following URL, or any other character for that matter!
Now execute
unzip sort.zipto create a folder called sort. You no longer need the ZIP file, so you can execute
rm sort.zipand respond with “y” followed by Enter at the prompt to remove the ZIP file you downloaded.
Now type
cd sortfollowed by Enter to move yourself into (i.e., open) that directory. Your prompt should now resemble the below.
sort/ $If all was successful, you should execute
lsand you should see a collection of .txt files alongside executable programs sort1, sort2, and sort3.
If you run into any trouble, follow these same steps steps again and see if you can determine where you went wrong!
Instructions
Provided to you are three already-compiled C programs, sort1, sort2, and sort3. Each of these programs implements a different sorting algorithm: selection sort, bubble sort, or merge sort (though not necessarily in that order!). Your task is to determine which sorting algorithm is used by each file.
- sort1,- sort2, and- sort3are binary files, so you won’t be able to view the C source code for each. To assess which sort implements which algorithm, run the sorts on different lists of values.
- Multiple .txtfiles are provided to you. These files containnlines of values, either reversed, shuffled, or sorted.- For example, reversed10000.txtcontains 10000 lines of numbers that are reversed from10000, whilerandom10000.txtcontains 10000 lines of numbers that are in random order.
 
- For example, 
- To run the sorts on the text files, in the terminal, run ./[program_name] [text_file.txt]. Make sure you have made use ofcdto move into thesortdirectory!- For example, to sort reversed10000.txtwithsort1, run./sort1 reversed10000.txt.
 
- For example, to sort 
- You may find it helpful to time your sorts. To do so, run time ./[sort_file] [text_file.txt].- For example, you could run time ./sort1 reversed10000.txtto runsort1on 10,000 reversed numbers. At the end of your terminal’s output, you can look at therealtime to see how much time actually elapsed while running the program.
 
- For example, you could run 
- Record your answers in answers.txt, along with an explanation for each program, by filling in the blanks markedTODO.
Hints 💡
- The different types of .txtfiles may help you determine which sort is which. Consider how each algorithm performs with an already sorted list. How about a reversed list? Or shuffled list? It may help to work through a smaller list of each type and walk through each sorting process.
Walkthrough 🎥
YouTube: https://youtu.be/-Bhxxw6JKKY
bilibili: https://www.bilibili.com/video/BV1pX4y1B7cj?share_source=copy_web
How to Check Your Answers 🖥
Execute the below to evaluate the correctness of your answers using check50. But be sure to fill in your explanations as well, which check50 won’t check here!
check50 cs50/labs/2023/x/sortHow to Submit 🚀
In your terminal, execute the below to submit your work.
submit50 cs50/labs/2023/x/sortSolution 🧑🏻💻
Ricky’s GitHub Repository for CS50 Labs: https://github.com/Ricky2333/CS50-Labs
CS50 Study Group:677535709(QQ Group)
 
                     
                     
                        
                        