Title: ????????????????? (Sorting)
1???? COSC2202 ??????????????? (Data Structure)
- ????????????????? (Sorting)
2????????????????? (Sorting)
- ???????????????? (Sorting) ???????
??????????????????????????????????????????????????
?? ??????????????????????? ?????????????????????
???????????????????????????????????? ?????????? 2
?????????? ? ??? - 1. ???????????????????????? (Internal sorting)
- ??????????????????????????????????????????????????
???? (main memory) - ?????????????????????????? ???? ?????, ???
??????? - 2. ????????????????????????? (External sorting)
- ??????????????????????????????????????????????????
????????????????????????????? - ?????????????????????? ???? ?????, ???
??????????????????????????????????????????????????
????? ????????????????????????????????????????????
3????????????????????????????
Sort Order1. Ascending Order ???????????? --gt
???2. Descending Order ??????????? --gt ????
???????????????????????????
?????????????????????????????
????????
4Insertion Sort
- ?????????????????? ??? ???????????????????????????
????????????????????? ?????????????????
??????????????????????????????????????????????????
????????????????????????????????? ?
?????????????????
5Insertion Sort
- ???????
- ????????????????????????????????
- ?????????????????????????????????????
6Shell Sort
- ??????????????????? ??????????????????????????????
????????????????????????????????? ?????
?????????????????????????????? ????
????????????????????????????? ??????????????????
???????????????????????????????????????????????
7Shell Sort
- ???????? ????? Segment ????? K3
8Shell Sort
- ???????
- ???????????????????? K ???????????????????????????
????????????????????? ???? ???????? 10 ??? K
n/2 10/2 5 - ????????????????????????????? ???????????? K ????
(??????????????????????????????? K ?????? ???? K1
5 K2 5/2 2) - ??? K gt 1 ???????? ??????????????????????????????
??? K 1 ????????????????????
9Shell Sort
????????????????????????????? K
10Shell Sort
11Shell Sort
12Selection Sort
- ??????????????????? ??????????????????????????????
??????????????????????????????????????????????????
??????? ??????????????????????????
??????????????????????????????????????????????????
????????????????????????
13Selection Sort
- ???????
- ???????????????????????/??????????????????????????
????????????? - ?????????????????????????????/?????????
14Heap Sort
15Heap Sort
16Bubble Sort
- ????????????????????? ????????????????????????????
??????? 2 ???????????? ???????????????????????
17Bubble Sort
18Quick Sort
- ???????????????????? ??????????
divide-and-conquer ???????????????????????????????
???? 2 ????? ?????????????????????????????????????
????????????????????????? ????????????????????????
?????????????????????????????????????
????????????????????????????????????? 2
???????????? ?????????????????????????????????????
??????????????????
19Quick Sort
- ???????
- ???????????????????????????????? Pivot
????????????????????????????????????????????????
??? ?????????????????????? Pivot
???????????????????????? Pivot - ???????????????????
- ?????????????????????????
20Quick Sort
- ??????????????????????????? Picking the pivot
??????????????????????????????????
??????????????????????????????????????????????
???????????????????? ??????? ?????????????????????
??????????????????????????????????????????
???????????????????????????????????
21Quick Sort
????????? lt Pivot ???? SortLeftSortLeft1
????????? gt Pivot ???? SortRightSortRight-1
???? Pivot ??? ???????????? SortLeft-1
22Quick Sort
23Merge Sort
- ??????????????? (Merge Sort ) -- ????? Merge Sort
?????????? divide-and-conquer ????????? Quick
Sort ????????????????????????????????????
????????????????????????????????????????? Quick
sort Quick sort ?????????????????????????????????
???????????????????? ??? merge sort ???
??????????????????????????????????
????????????????????????????? ????????????????????
????????????????????? ????????????????????????????
???? ???????????????????????????????????
??????????????????????????????????????????????????
???????????????
24Merge Sort
???????????????????????????? ??????????????????
????????????? ??????????????????????????????
25Radix Sort
- ??????????????????? -- ???????????????????????????
????????????????? - 1. ?????????????????????????????????????????
??????????????????????????????????????????????????
???? - 2. ????????????????????????????
?????????????????????????????????????????
?????????? ????????????????? - 3. ????????????????????????????????????
?????????????????????????????????????
??????????????????????????????????????????????????
?????????? ????????????? - 4. ???????????????????????????????????????????????
???????????????????????????????????????????????
??????????? ???????????????????
26Radix Sort
???????????? Linked List
27?????????????????
- Big-O
- ???????????????????????????????????????????
?????????????????????????????????????????????
28?????????????????
void swap(int data, int a, int b) int
temp temp dataa dataa
datab datab temp / swap /
- void insertion_sort(int data, int num_elts)
-
- int i, j
- for (i0 iltnum_elts i)
- for (ji (jgt0) (dataj lt dataj-1)
j--) - swap(data, j, j-1)
- / insertion_sort /
Big-O n2
29?????????????????
void swap(int data, int a, int b) int
temp temp dataa dataa
datab datab temp / swap /
- void selection_sort(int data, int num_elts)
-
- int i, j, lowindex
- for (i0 iltnum_elts i) / Select i'th record
/ - lowindex i / Remember its index
/ - for (jnum_elts-1 jgti j--) / Find the least
value / - if (dataj lt datalowindex)
- lowindex j / Put it in place /
- if (i ! lowindex) / To reduce
swap() operation / - swap(data, i, lowindex)
-
- / selection_sort /
Big-O n2
30?????????????????
- void bubble_sort(int data, int num_elts)
-
- int i, j
-
- for (i0 iltnum_elts i)
- for (jnum_elts-1 jgti j--)
- if (dataj lt dataj-1)
- swap(data, j, j-1)
-
- / bubble_sort /
void swap(int data, int a, int b) int
temp temp dataa dataa
datab datab temp / swap /
Big-O n2
31?????????????????
k, the size of each key s, the chunk size used
by the implementation.
least significant digit (LSD) most significant
digit (MSD)
32?????????????????