SlideShare a Scribd company logo
CSE 143
Lecture 16
Sorting
reading: 13.1, 13.3 - 13.4
slides created by Marty Stepp
http://www.cs.washington.edu/143/
2
Sorting
• sorting: Rearranging the values in an array or collection into a
specific order (usually into their "natural ordering").
– one of the fundamental problems in computer science
– can be solved in many ways:
• there are many sorting algorithms
• some are faster/slower than others
• some use more/less memory than others
• some work better with specific kinds of data
• some can utilize multiple computers / processors, ...
– comparison-based sorting : determining order by comparing pairs
of elements:
•<, >, compareTo, …
3
Comparable and sorting
• The Arrays and Collections classes in java.util have a
static method sort that sorts the elements of an array/list
Point[] points = new Point[3];
points[0] = new Point(7, 6);
points[1] = new Point(10, 2)
points[2] = new Point(7, -1);
points[3] = new Point(3, 11);
Arrays.sort(points);
System.out.println(Arrays.toString(points));
// [(3, 11), (7, -1), (7, 6), (10, 2)]
List<Point> points = new ArrayList<Point>();
points.add(...);
Collections.sort(points);
System.out.println(points);
// [(3, 11), (7, -1), (7, 6), (10, 2)]
4
Sorting algorithms
• bogo sort: shuffle and pray
• bubble sort: swap adjacent pairs that are out of order
• selection sort: look for the smallest element, move to front
• insertion sort: build an increasingly large sorted front portion
• merge sort: recursively divide the array in half and sort it
• heap sort: place the values into a sorted tree structure
• quick sort: recursively partition array based on a middle value
other specialized sorting algorithms:
• bucket sort: cluster elements into smaller groups, sort them
• radix sort: sort integers by last digit, then 2nd to last, then ...
• ...
5
Bogo sort
• bogo sort: Orders a list of values by repetitively shuffling
them and checking if they are sorted.
– name comes from the word "bogus"
The algorithm:
– Scan the list, seeing if it is sorted. If so, stop.
– Else, shuffle the values in the list and repeat.
• This sorting algorithm (obviously) has terrible performance!
– What is its runtime?
6
Bogo sort code
// Places the elements of a into sorted order.
public static void bogoSort(int[] a) {
while (!isSorted(a)) {
shuffle(a);
}
}
// Returns true if a's elements are in sorted order.
public static boolean isSorted(int[] a) {
for (int i = 0; i < a.length - 1; i++) {
if (a[i] > a[i + 1]) {
return false;
}
}
return true;
}
7
Bogo sort code, cont'd.
// Shuffles an array of ints by randomly swapping each
// element with an element ahead of it in the array.
public static void shuffle(int[] a) {
for (int i = 0; i < a.length - 1; i++) {
// pick a random index in [i+1, a.length-1]
int range = a.length - 1 - (i + 1) + 1;
int j = (int) (Math.random() * range + (i + 1));
swap(a, i, j);
}
}
// Swaps a[i] with a[j].
public static void swap(int[] a, int i, int j) {
if (i != j) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
8
Selection sort
• selection sort: Orders a list of values by repeatedly putting
the smallest or largest unplaced value into its final position.
The algorithm:
– Look through the list to find the smallest value.
– Swap it so that it is at index 0.
– Look through the list to find the second-smallest value.
– Swap it so that it is at index 1.
...
– Repeat until all values are in their proper places.
9
Selection sort example
• Initial array:
• After 1st, 2nd, and 3rd passes:
index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
value 22 18 12 -4 27 30 36 50 7 68 91 56 2 85 42 98 25
index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
value -4 18 12 22 27 30 36 50 7 68 91 56 2 85 42 98 25
index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
value -4 2 12 22 27 30 36 50 7 68 91 56 18 85 42 98 25
index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
value -4 2 7 22 27 30 36 50 12 68 91 56 18 85 42 98 25
10
Selection sort code
// Rearranges the elements of a into sorted order using
// the selection sort algorithm.
public static void selectionSort(int[] a) {
for (int i = 0; i < a.length - 1; i++) {
// find index of smallest remaining value
int min = i;
for (int j = i + 1; j < a.length; j++) {
if (a[j] < a[min]) {
min = j;
}
}
// swap smallest value its proper place, a[i]
swap(a, i, min);
}
}
11
Selection sort runtime (Fig. 13.6)
• What is the complexity class (Big-Oh) of selection sort?
12
Similar algorithms
• bubble sort: Make repeated passes, swapping adjacent values
– slower than selection sort (has to do more swaps)
• insertion sort: Shift each element into a sorted sub-array
– faster than selection sort (examines fewer values)
index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
value 22 18 12 -4 27 30 36 50 7 68 91 56 2 85 42 98 25
index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
value 18 12 -4 22 27 30 36 7 50 68 56 2 85 42 91 25 98
22 50 91 98
index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
value -4 12 18 22 27 30 36 50 7 68 91 56 2 85 42 98 25
7
sorted sub-array (indexes 0-7)
13
Merge sort
• merge sort: Repeatedly divides the data in half, sorts each
half, and combines the sorted halves into a sorted whole.
The algorithm:
– Divide the list into two roughly equal halves.
– Sort the left half.
– Sort the right half.
– Merge the two sorted halves into one sorted list.
– Often implemented recursively.
– An example of a "divide and conquer" algorithm.
• Invented by John von Neumann in 1945
14
Merge sort example
index 0 1 2 3 4 5 6 7
value 22 18 12 -4 58 7 31 42
22 18 12 -4
22 18
22 18
18 22
merge
split
12 -4
12 -4
-4 12
merge
split
split
-4 12 18 22
58 7 31 42
58 7
58 7
7 58
merge
split
31 42
31 42
31 42
merge
split
split
7 31 42 58
-4 7 12 18 22 31 42 58
split
merge merge
merge
15
Splitting in half
// Returns the first half of the given array.
public static int[] leftHalf(int[] a) {
int size1 = a.length / 2;
int[] left = new int[size1];
for (int i = 0; i < size1; i++) {
left[i] = a[i];
}
return left;
}
// Returns the second half of the given array.
public static int[] rightHalf(int[] a) {
int size1 = a.length / 2;
int size2 = a.length - size1;
int[] right = new int[size2];
for (int i = 0; i < size2; i++) {
right[i] = a[i + size1];
}
return right;
}
16
Merging sorted halves
17
Merge halves code
// Merges the left/right elements into a sorted result.
// Precondition: left/right are sorted
public static void merge(int[] result, int[] left,
int[] right) {
int i1 = 0; // index into left array
int i2 = 0; // index into right array
for (int i = 0; i < result.length; i++) {
if (i2 >= right.length ||
(i1 < left.length && left[i1] <= right[i2])) {
result[i] = left[i1]; // take from left
i1++;
} else {
result[i] = right[i2]; // take from right
i2++;
}
}
}
18
Merge sort code
// Rearranges the elements of a into sorted order using
// the merge sort algorithm.
public static void mergeSort(int[] a) {
// split array into two halves
int[] left = leftHalf(a);
int[] right = rightHalf(a);
// sort the two halves
...
// merge the sorted halves into a sorted whole
merge(a, left, right);
}
19
Merge sort code 2
// Rearranges the elements of a into sorted order using
// the merge sort algorithm (recursive).
public static void mergeSort(int[] a) {
if (a.length >= 2) {
// split array into two halves
int[] left = leftHalf(a);
int[] right = rightHalf(a);
// sort the two halves
mergeSort(left);
mergeSort(right);
// merge the sorted halves into a sorted whole
merge(a, left, right);
}
}
20
Merge sort runtime
• What is the complexity class (Big-Oh) of merge sort?

More Related Content

Similar to 16-sorting.ppt

Chapter 11 - Sorting and Searching
Chapter 11 - Sorting and SearchingChapter 11 - Sorting and Searching
Chapter 11 - Sorting and Searching
Eduardo Bergavera
 
Searching and Sorting Algorithms in Data Structures
Searching and Sorting Algorithms  in Data StructuresSearching and Sorting Algorithms  in Data Structures
Searching and Sorting Algorithms in Data Structures
poongothai11
 
sorting.pptx
sorting.pptxsorting.pptx
sorting.pptx
DrRanjeetKumar51721
 
Data Structures 6
Data Structures 6Data Structures 6
Data Structures 6
Dr.Umadevi V
 
Basic Sorting algorithms csharp
Basic Sorting algorithms csharpBasic Sorting algorithms csharp
Basic Sorting algorithms csharp
Micheal Ogundero
 
Heap, quick and merge sort
Heap, quick and merge sortHeap, quick and merge sort
Heap, quick and merge sort
Dr. Mohammad Amir Khusru Akhtar (Ph.D)
 
CSPC/ PPS Sorting methods
CSPC/ PPS Sorting methodsCSPC/ PPS Sorting methods
CSPC/ PPS Sorting methods
Ankur Srivastava
 
searching in data structure.pptx
searching in data structure.pptxsearching in data structure.pptx
searching in data structure.pptx
chouguleamruta24
 
Data structures arrays
Data structures   arraysData structures   arrays
Data structures arrays
maamir farooq
 
Advanced s and s algorithm.ppt
Advanced s and s algorithm.pptAdvanced s and s algorithm.ppt
Advanced s and s algorithm.ppt
LegesseSamuel
 
Chapter 4: basic search algorithms data structure
Chapter 4: basic search algorithms data structureChapter 4: basic search algorithms data structure
Chapter 4: basic search algorithms data structure
Mahmoud Alfarra
 
Problem 1 Show the comparison of runtime of linear search and binar.pdf
Problem 1 Show the comparison of runtime of linear search and binar.pdfProblem 1 Show the comparison of runtime of linear search and binar.pdf
Problem 1 Show the comparison of runtime of linear search and binar.pdf
ebrahimbadushata00
 
Sorting algorithums > Data Structures & Algorithums
Sorting algorithums  > Data Structures & AlgorithumsSorting algorithums  > Data Structures & Algorithums
Sorting algorithums > Data Structures & Algorithums
Ain-ul-Moiz Khawaja
 
UNIT IV -Data Structures.pdf
UNIT IV -Data Structures.pdfUNIT IV -Data Structures.pdf
UNIT IV -Data Structures.pdf
KPRevathiAsstprofITD
 
search_sort Search sortSearch sortSearch sortSearch sort
search_sort Search sortSearch sortSearch sortSearch sortsearch_sort Search sortSearch sortSearch sortSearch sort
search_sort Search sortSearch sortSearch sortSearch sort
Shanmuganathan C
 
Data Structure (MC501)
Data Structure (MC501)Data Structure (MC501)
Data Structure (MC501)
Kamal Singh Lodhi
 
ch07-arrays.ppt
ch07-arrays.pptch07-arrays.ppt
ch07-arrays.ppt
Mahyuddin8
 
Introduction to Algorithms
Introduction to AlgorithmsIntroduction to Algorithms
Introduction to Algorithms
pppepito86
 
07+08slide.pptx
07+08slide.pptx07+08slide.pptx
07+08slide.pptx
MURADSANJOUM
 
IRJET- A Survey on Different Searching Algorithms
IRJET- A Survey on Different Searching AlgorithmsIRJET- A Survey on Different Searching Algorithms
IRJET- A Survey on Different Searching Algorithms
IRJET Journal
 

Similar to 16-sorting.ppt (20)

Chapter 11 - Sorting and Searching
Chapter 11 - Sorting and SearchingChapter 11 - Sorting and Searching
Chapter 11 - Sorting and Searching
 
Searching and Sorting Algorithms in Data Structures
Searching and Sorting Algorithms  in Data StructuresSearching and Sorting Algorithms  in Data Structures
Searching and Sorting Algorithms in Data Structures
 
sorting.pptx
sorting.pptxsorting.pptx
sorting.pptx
 
Data Structures 6
Data Structures 6Data Structures 6
Data Structures 6
 
Basic Sorting algorithms csharp
Basic Sorting algorithms csharpBasic Sorting algorithms csharp
Basic Sorting algorithms csharp
 
Heap, quick and merge sort
Heap, quick and merge sortHeap, quick and merge sort
Heap, quick and merge sort
 
CSPC/ PPS Sorting methods
CSPC/ PPS Sorting methodsCSPC/ PPS Sorting methods
CSPC/ PPS Sorting methods
 
searching in data structure.pptx
searching in data structure.pptxsearching in data structure.pptx
searching in data structure.pptx
 
Data structures arrays
Data structures   arraysData structures   arrays
Data structures arrays
 
Advanced s and s algorithm.ppt
Advanced s and s algorithm.pptAdvanced s and s algorithm.ppt
Advanced s and s algorithm.ppt
 
Chapter 4: basic search algorithms data structure
Chapter 4: basic search algorithms data structureChapter 4: basic search algorithms data structure
Chapter 4: basic search algorithms data structure
 
Problem 1 Show the comparison of runtime of linear search and binar.pdf
Problem 1 Show the comparison of runtime of linear search and binar.pdfProblem 1 Show the comparison of runtime of linear search and binar.pdf
Problem 1 Show the comparison of runtime of linear search and binar.pdf
 
Sorting algorithums > Data Structures & Algorithums
Sorting algorithums  > Data Structures & AlgorithumsSorting algorithums  > Data Structures & Algorithums
Sorting algorithums > Data Structures & Algorithums
 
UNIT IV -Data Structures.pdf
UNIT IV -Data Structures.pdfUNIT IV -Data Structures.pdf
UNIT IV -Data Structures.pdf
 
search_sort Search sortSearch sortSearch sortSearch sort
search_sort Search sortSearch sortSearch sortSearch sortsearch_sort Search sortSearch sortSearch sortSearch sort
search_sort Search sortSearch sortSearch sortSearch sort
 
Data Structure (MC501)
Data Structure (MC501)Data Structure (MC501)
Data Structure (MC501)
 
ch07-arrays.ppt
ch07-arrays.pptch07-arrays.ppt
ch07-arrays.ppt
 
Introduction to Algorithms
Introduction to AlgorithmsIntroduction to Algorithms
Introduction to Algorithms
 
07+08slide.pptx
07+08slide.pptx07+08slide.pptx
07+08slide.pptx
 
IRJET- A Survey on Different Searching Algorithms
IRJET- A Survey on Different Searching AlgorithmsIRJET- A Survey on Different Searching Algorithms
IRJET- A Survey on Different Searching Algorithms
 

Recently uploaded

RECOGNITION AWARD 13 - TO ALESSANDRO MARTINS.pdf
RECOGNITION AWARD 13 - TO ALESSANDRO MARTINS.pdfRECOGNITION AWARD 13 - TO ALESSANDRO MARTINS.pdf
RECOGNITION AWARD 13 - TO ALESSANDRO MARTINS.pdf
AlessandroMartins454470
 
Leadership Ambassador club Adventist module
Leadership Ambassador club Adventist moduleLeadership Ambassador club Adventist module
Leadership Ambassador club Adventist module
kakomaeric00
 
Resumes, Cover Letters, and Applying Online
Resumes, Cover Letters, and Applying OnlineResumes, Cover Letters, and Applying Online
Resumes, Cover Letters, and Applying Online
Bruce Bennett
 
一比一原版(TMU毕业证)多伦多都会大学毕业证如何办理
一比一原版(TMU毕业证)多伦多都会大学毕业证如何办理一比一原版(TMU毕业证)多伦多都会大学毕业证如何办理
一比一原版(TMU毕业证)多伦多都会大学毕业证如何办理
yuhofha
 
一比一原版(UVic毕业证)维多利亚大学毕业证如何办理
一比一原版(UVic毕业证)维多利亚大学毕业证如何办理一比一原版(UVic毕业证)维多利亚大学毕业证如何办理
一比一原版(UVic毕业证)维多利亚大学毕业证如何办理
pxyhy
 
Introducing Gopay Mobile App For Environment.pptx
Introducing Gopay Mobile App For Environment.pptxIntroducing Gopay Mobile App For Environment.pptx
Introducing Gopay Mobile App For Environment.pptx
FauzanHarits1
 
0624.speakingengagementsandteaching-01.pdf
0624.speakingengagementsandteaching-01.pdf0624.speakingengagementsandteaching-01.pdf
0624.speakingengagementsandteaching-01.pdf
Thomas GIRARD BDes
 
thyroid case presentation.pptx Kamala's Lakshaman palatial
thyroid case presentation.pptx Kamala's Lakshaman palatialthyroid case presentation.pptx Kamala's Lakshaman palatial
thyroid case presentation.pptx Kamala's Lakshaman palatial
Aditya Raghav
 
官方认证美国旧金山州立大学毕业证学位证书案例原版一模一样
官方认证美国旧金山州立大学毕业证学位证书案例原版一模一样官方认证美国旧金山州立大学毕业证学位证书案例原版一模一样
官方认证美国旧金山州立大学毕业证学位证书案例原版一模一样
2zjra9bn
 
一比一原版(UBC毕业证)不列颠哥伦比亚大学毕业证如何办理
一比一原版(UBC毕业证)不列颠哥伦比亚大学毕业证如何办理一比一原版(UBC毕业证)不列颠哥伦比亚大学毕业证如何办理
一比一原版(UBC毕业证)不列颠哥伦比亚大学毕业证如何办理
pxyhy
 
A Guide to a Winning Interview June 2024
A Guide to a Winning Interview June 2024A Guide to a Winning Interview June 2024
A Guide to a Winning Interview June 2024
Bruce Bennett
 
labb123456789123456789123456789123456789
labb123456789123456789123456789123456789labb123456789123456789123456789123456789
labb123456789123456789123456789123456789
Ghh
 
一比一原版(YU毕业证)约克大学毕业证如何办理
一比一原版(YU毕业证)约克大学毕业证如何办理一比一原版(YU毕业证)约克大学毕业证如何办理
一比一原版(YU毕业证)约克大学毕业证如何办理
yuhofha
 
在线制作加拿大萨省大学毕业证文凭证书实拍图原版一模一样
在线制作加拿大萨省大学毕业证文凭证书实拍图原版一模一样在线制作加拿大萨省大学毕业证文凭证书实拍图原版一模一样
在线制作加拿大萨省大学毕业证文凭证书实拍图原版一模一样
2zjra9bn
 
一比一原版布拉德福德大学毕业证(bradford毕业证)如何办理
一比一原版布拉德福德大学毕业证(bradford毕业证)如何办理一比一原版布拉德福德大学毕业证(bradford毕业证)如何办理
一比一原版布拉德福德大学毕业证(bradford毕业证)如何办理
taqyea
 
Status of Women in Pakistan.pptxStatus of Women in Pakistan.pptx
Status of Women in Pakistan.pptxStatus of Women in Pakistan.pptxStatus of Women in Pakistan.pptxStatus of Women in Pakistan.pptx
Status of Women in Pakistan.pptxStatus of Women in Pakistan.pptx
MuhammadWaqasBaloch1
 
Lbs last rank 2023 9988kr47h4744j445.pdf
Lbs last rank 2023 9988kr47h4744j445.pdfLbs last rank 2023 9988kr47h4744j445.pdf
Lbs last rank 2023 9988kr47h4744j445.pdf
ashiquepa3
 
lab.123456789123456789123456789123456789
lab.123456789123456789123456789123456789lab.123456789123456789123456789123456789
lab.123456789123456789123456789123456789
Ghh
 
Jill Pizzola's Tenure as Senior Talent Acquisition Partner at THOMSON REUTERS...
Jill Pizzola's Tenure as Senior Talent Acquisition Partner at THOMSON REUTERS...Jill Pizzola's Tenure as Senior Talent Acquisition Partner at THOMSON REUTERS...
Jill Pizzola's Tenure as Senior Talent Acquisition Partner at THOMSON REUTERS...
dsnow9802
 
一比一原版(SFU毕业证)西蒙弗雷泽大学毕业证如何办理
一比一原版(SFU毕业证)西蒙弗雷泽大学毕业证如何办理一比一原版(SFU毕业证)西蒙弗雷泽大学毕业证如何办理
一比一原版(SFU毕业证)西蒙弗雷泽大学毕业证如何办理
pxyhy
 

Recently uploaded (20)

RECOGNITION AWARD 13 - TO ALESSANDRO MARTINS.pdf
RECOGNITION AWARD 13 - TO ALESSANDRO MARTINS.pdfRECOGNITION AWARD 13 - TO ALESSANDRO MARTINS.pdf
RECOGNITION AWARD 13 - TO ALESSANDRO MARTINS.pdf
 
Leadership Ambassador club Adventist module
Leadership Ambassador club Adventist moduleLeadership Ambassador club Adventist module
Leadership Ambassador club Adventist module
 
Resumes, Cover Letters, and Applying Online
Resumes, Cover Letters, and Applying OnlineResumes, Cover Letters, and Applying Online
Resumes, Cover Letters, and Applying Online
 
一比一原版(TMU毕业证)多伦多都会大学毕业证如何办理
一比一原版(TMU毕业证)多伦多都会大学毕业证如何办理一比一原版(TMU毕业证)多伦多都会大学毕业证如何办理
一比一原版(TMU毕业证)多伦多都会大学毕业证如何办理
 
一比一原版(UVic毕业证)维多利亚大学毕业证如何办理
一比一原版(UVic毕业证)维多利亚大学毕业证如何办理一比一原版(UVic毕业证)维多利亚大学毕业证如何办理
一比一原版(UVic毕业证)维多利亚大学毕业证如何办理
 
Introducing Gopay Mobile App For Environment.pptx
Introducing Gopay Mobile App For Environment.pptxIntroducing Gopay Mobile App For Environment.pptx
Introducing Gopay Mobile App For Environment.pptx
 
0624.speakingengagementsandteaching-01.pdf
0624.speakingengagementsandteaching-01.pdf0624.speakingengagementsandteaching-01.pdf
0624.speakingengagementsandteaching-01.pdf
 
thyroid case presentation.pptx Kamala's Lakshaman palatial
thyroid case presentation.pptx Kamala's Lakshaman palatialthyroid case presentation.pptx Kamala's Lakshaman palatial
thyroid case presentation.pptx Kamala's Lakshaman palatial
 
官方认证美国旧金山州立大学毕业证学位证书案例原版一模一样
官方认证美国旧金山州立大学毕业证学位证书案例原版一模一样官方认证美国旧金山州立大学毕业证学位证书案例原版一模一样
官方认证美国旧金山州立大学毕业证学位证书案例原版一模一样
 
一比一原版(UBC毕业证)不列颠哥伦比亚大学毕业证如何办理
一比一原版(UBC毕业证)不列颠哥伦比亚大学毕业证如何办理一比一原版(UBC毕业证)不列颠哥伦比亚大学毕业证如何办理
一比一原版(UBC毕业证)不列颠哥伦比亚大学毕业证如何办理
 
A Guide to a Winning Interview June 2024
A Guide to a Winning Interview June 2024A Guide to a Winning Interview June 2024
A Guide to a Winning Interview June 2024
 
labb123456789123456789123456789123456789
labb123456789123456789123456789123456789labb123456789123456789123456789123456789
labb123456789123456789123456789123456789
 
一比一原版(YU毕业证)约克大学毕业证如何办理
一比一原版(YU毕业证)约克大学毕业证如何办理一比一原版(YU毕业证)约克大学毕业证如何办理
一比一原版(YU毕业证)约克大学毕业证如何办理
 
在线制作加拿大萨省大学毕业证文凭证书实拍图原版一模一样
在线制作加拿大萨省大学毕业证文凭证书实拍图原版一模一样在线制作加拿大萨省大学毕业证文凭证书实拍图原版一模一样
在线制作加拿大萨省大学毕业证文凭证书实拍图原版一模一样
 
一比一原版布拉德福德大学毕业证(bradford毕业证)如何办理
一比一原版布拉德福德大学毕业证(bradford毕业证)如何办理一比一原版布拉德福德大学毕业证(bradford毕业证)如何办理
一比一原版布拉德福德大学毕业证(bradford毕业证)如何办理
 
Status of Women in Pakistan.pptxStatus of Women in Pakistan.pptx
Status of Women in Pakistan.pptxStatus of Women in Pakistan.pptxStatus of Women in Pakistan.pptxStatus of Women in Pakistan.pptx
Status of Women in Pakistan.pptxStatus of Women in Pakistan.pptx
 
Lbs last rank 2023 9988kr47h4744j445.pdf
Lbs last rank 2023 9988kr47h4744j445.pdfLbs last rank 2023 9988kr47h4744j445.pdf
Lbs last rank 2023 9988kr47h4744j445.pdf
 
lab.123456789123456789123456789123456789
lab.123456789123456789123456789123456789lab.123456789123456789123456789123456789
lab.123456789123456789123456789123456789
 
Jill Pizzola's Tenure as Senior Talent Acquisition Partner at THOMSON REUTERS...
Jill Pizzola's Tenure as Senior Talent Acquisition Partner at THOMSON REUTERS...Jill Pizzola's Tenure as Senior Talent Acquisition Partner at THOMSON REUTERS...
Jill Pizzola's Tenure as Senior Talent Acquisition Partner at THOMSON REUTERS...
 
一比一原版(SFU毕业证)西蒙弗雷泽大学毕业证如何办理
一比一原版(SFU毕业证)西蒙弗雷泽大学毕业证如何办理一比一原版(SFU毕业证)西蒙弗雷泽大学毕业证如何办理
一比一原版(SFU毕业证)西蒙弗雷泽大学毕业证如何办理
 

16-sorting.ppt

  • 1. CSE 143 Lecture 16 Sorting reading: 13.1, 13.3 - 13.4 slides created by Marty Stepp http://www.cs.washington.edu/143/
  • 2. 2 Sorting • sorting: Rearranging the values in an array or collection into a specific order (usually into their "natural ordering"). – one of the fundamental problems in computer science – can be solved in many ways: • there are many sorting algorithms • some are faster/slower than others • some use more/less memory than others • some work better with specific kinds of data • some can utilize multiple computers / processors, ... – comparison-based sorting : determining order by comparing pairs of elements: •<, >, compareTo, …
  • 3. 3 Comparable and sorting • The Arrays and Collections classes in java.util have a static method sort that sorts the elements of an array/list Point[] points = new Point[3]; points[0] = new Point(7, 6); points[1] = new Point(10, 2) points[2] = new Point(7, -1); points[3] = new Point(3, 11); Arrays.sort(points); System.out.println(Arrays.toString(points)); // [(3, 11), (7, -1), (7, 6), (10, 2)] List<Point> points = new ArrayList<Point>(); points.add(...); Collections.sort(points); System.out.println(points); // [(3, 11), (7, -1), (7, 6), (10, 2)]
  • 4. 4 Sorting algorithms • bogo sort: shuffle and pray • bubble sort: swap adjacent pairs that are out of order • selection sort: look for the smallest element, move to front • insertion sort: build an increasingly large sorted front portion • merge sort: recursively divide the array in half and sort it • heap sort: place the values into a sorted tree structure • quick sort: recursively partition array based on a middle value other specialized sorting algorithms: • bucket sort: cluster elements into smaller groups, sort them • radix sort: sort integers by last digit, then 2nd to last, then ... • ...
  • 5. 5 Bogo sort • bogo sort: Orders a list of values by repetitively shuffling them and checking if they are sorted. – name comes from the word "bogus" The algorithm: – Scan the list, seeing if it is sorted. If so, stop. – Else, shuffle the values in the list and repeat. • This sorting algorithm (obviously) has terrible performance! – What is its runtime?
  • 6. 6 Bogo sort code // Places the elements of a into sorted order. public static void bogoSort(int[] a) { while (!isSorted(a)) { shuffle(a); } } // Returns true if a's elements are in sorted order. public static boolean isSorted(int[] a) { for (int i = 0; i < a.length - 1; i++) { if (a[i] > a[i + 1]) { return false; } } return true; }
  • 7. 7 Bogo sort code, cont'd. // Shuffles an array of ints by randomly swapping each // element with an element ahead of it in the array. public static void shuffle(int[] a) { for (int i = 0; i < a.length - 1; i++) { // pick a random index in [i+1, a.length-1] int range = a.length - 1 - (i + 1) + 1; int j = (int) (Math.random() * range + (i + 1)); swap(a, i, j); } } // Swaps a[i] with a[j]. public static void swap(int[] a, int i, int j) { if (i != j) { int temp = a[i]; a[i] = a[j]; a[j] = temp; } }
  • 8. 8 Selection sort • selection sort: Orders a list of values by repeatedly putting the smallest or largest unplaced value into its final position. The algorithm: – Look through the list to find the smallest value. – Swap it so that it is at index 0. – Look through the list to find the second-smallest value. – Swap it so that it is at index 1. ... – Repeat until all values are in their proper places.
  • 9. 9 Selection sort example • Initial array: • After 1st, 2nd, and 3rd passes: index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 value 22 18 12 -4 27 30 36 50 7 68 91 56 2 85 42 98 25 index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 value -4 18 12 22 27 30 36 50 7 68 91 56 2 85 42 98 25 index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 value -4 2 12 22 27 30 36 50 7 68 91 56 18 85 42 98 25 index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 value -4 2 7 22 27 30 36 50 12 68 91 56 18 85 42 98 25
  • 10. 10 Selection sort code // Rearranges the elements of a into sorted order using // the selection sort algorithm. public static void selectionSort(int[] a) { for (int i = 0; i < a.length - 1; i++) { // find index of smallest remaining value int min = i; for (int j = i + 1; j < a.length; j++) { if (a[j] < a[min]) { min = j; } } // swap smallest value its proper place, a[i] swap(a, i, min); } }
  • 11. 11 Selection sort runtime (Fig. 13.6) • What is the complexity class (Big-Oh) of selection sort?
  • 12. 12 Similar algorithms • bubble sort: Make repeated passes, swapping adjacent values – slower than selection sort (has to do more swaps) • insertion sort: Shift each element into a sorted sub-array – faster than selection sort (examines fewer values) index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 value 22 18 12 -4 27 30 36 50 7 68 91 56 2 85 42 98 25 index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 value 18 12 -4 22 27 30 36 7 50 68 56 2 85 42 91 25 98 22 50 91 98 index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 value -4 12 18 22 27 30 36 50 7 68 91 56 2 85 42 98 25 7 sorted sub-array (indexes 0-7)
  • 13. 13 Merge sort • merge sort: Repeatedly divides the data in half, sorts each half, and combines the sorted halves into a sorted whole. The algorithm: – Divide the list into two roughly equal halves. – Sort the left half. – Sort the right half. – Merge the two sorted halves into one sorted list. – Often implemented recursively. – An example of a "divide and conquer" algorithm. • Invented by John von Neumann in 1945
  • 14. 14 Merge sort example index 0 1 2 3 4 5 6 7 value 22 18 12 -4 58 7 31 42 22 18 12 -4 22 18 22 18 18 22 merge split 12 -4 12 -4 -4 12 merge split split -4 12 18 22 58 7 31 42 58 7 58 7 7 58 merge split 31 42 31 42 31 42 merge split split 7 31 42 58 -4 7 12 18 22 31 42 58 split merge merge merge
  • 15. 15 Splitting in half // Returns the first half of the given array. public static int[] leftHalf(int[] a) { int size1 = a.length / 2; int[] left = new int[size1]; for (int i = 0; i < size1; i++) { left[i] = a[i]; } return left; } // Returns the second half of the given array. public static int[] rightHalf(int[] a) { int size1 = a.length / 2; int size2 = a.length - size1; int[] right = new int[size2]; for (int i = 0; i < size2; i++) { right[i] = a[i + size1]; } return right; }
  • 17. 17 Merge halves code // Merges the left/right elements into a sorted result. // Precondition: left/right are sorted public static void merge(int[] result, int[] left, int[] right) { int i1 = 0; // index into left array int i2 = 0; // index into right array for (int i = 0; i < result.length; i++) { if (i2 >= right.length || (i1 < left.length && left[i1] <= right[i2])) { result[i] = left[i1]; // take from left i1++; } else { result[i] = right[i2]; // take from right i2++; } } }
  • 18. 18 Merge sort code // Rearranges the elements of a into sorted order using // the merge sort algorithm. public static void mergeSort(int[] a) { // split array into two halves int[] left = leftHalf(a); int[] right = rightHalf(a); // sort the two halves ... // merge the sorted halves into a sorted whole merge(a, left, right); }
  • 19. 19 Merge sort code 2 // Rearranges the elements of a into sorted order using // the merge sort algorithm (recursive). public static void mergeSort(int[] a) { if (a.length >= 2) { // split array into two halves int[] left = leftHalf(a); int[] right = rightHalf(a); // sort the two halves mergeSort(left); mergeSort(right); // merge the sorted halves into a sorted whole merge(a, left, right); } }
  • 20. 20 Merge sort runtime • What is the complexity class (Big-Oh) of merge sort?