Download - 30. Sorting 1-dimensional Arrays
![Page 1: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/1.jpg)
Insight Through Computing 1
30. Sorting 1-dimensional Arrays
Bubble SortInsertion Sort
![Page 2: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/2.jpg)
Insight Through Computing 2
Searching for an item in an unorganized collection?
May need to look through the whole collection to find the target item
E.g., find value x in vector v
Linear search
v
x
![Page 3: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/3.jpg)
Insight Through Computing 3
% f is index of first occurrence
% of value x in vector v.
% f is -1 if x not found.
k= 1;while k<=length(v) && v(k)~=x k= k + 1;
end
if k>length(v) f= -1; % signal for x not foundelse f= k;
end
![Page 4: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/4.jpg)
Insight Through Computing 4
% Linear Search% f is index of first occurrence
% of value x in vector v.
% f is -1 if x not found.
k= 1;while k<=length(v) && v(k)~=x k= k + 1;
end
if k>length(v) f= -1; % signal for x not foundelse f= k;
end12 1535 33 42 45v
x 31
![Page 5: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/5.jpg)
Insight Through Computing 5
% Linear Search% f is index of first occurrence
% of value x in vector v.
% f is -1 if x not found.
k= 1;while k<=length(v) && v(k)~=x k= k + 1;
end
if k>length(v) f= -1; % signal for x not foundelse f= k;
end
Suppose another vector is twice as long as v. The expected “effort” required to do a linear search is …
A. squared
C. the same
B. doubled
D. halved
![Page 6: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/6.jpg)
Insight Through Computing 6
% Linear Search% f is index of first occurrence
% of value x in vector v.
% f is -1 if x not found.
k= 1;while k<=length(v) && v(k)~=x k= k + 1;
end
if k>length(v) f= -1; % signal for x not foundelse f= k;
end12 1535 33 42 45v
x 31
![Page 7: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/7.jpg)
Insight Through Computing 7
% Linear Search% f is index of first occurrence
% of value x in vector v.
% f is -1 if x not found.
k= 1;while k<=length(v) && v(k)~=x k= k + 1;
end
if k>length(v) f= -1; % signal for x not foundelse f= k;
end12 15 3533 42 45v
x 31 What if v is sorted?
![Page 8: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/8.jpg)
Sorting data allows us to search more easily
Place Bib Name Official Time State Country Ctz
1 F7 Tune, Dire 2:25:25 ETH
2 F8 Biktimirova, Alevtina 2:25:27 RUS
3 F4 Jeptoo, Rita 2:26:34 KEN
4 F2 Prokopcuka, Jelena 2:28:12 LAT
5 F5 Magarsa, Askale Tafa 2:29:48 ETH
6 F9 Genovese, Bruna 2:30:52 ITA
7 F12 Olaru, Nuta 2:33:56 ROM
8 F6 Guta, Robe Tola 2:34:37 ETH
9 F1 Grigoryeva, Lidiya 2:35:37 RUS
10 F35 Hood, Stephanie A. 2:44:44 IL USA CAN
11 F14 Robson, Denise C. 2:45:54 NS CAN
12 F11 Chemjor, Magdaline 2:46:25 KEN
13 F101 Sultanova-Zhdanova, Firaya 2:47:17 FL USA RUS
14 F15 Mayger, Eliza M. 2:47:36 AUS
15 F24 Anklam, Ashley A. 2:48:43 MN USA
2008 Boston Marathon Top Women Finishers
Name Score Grade
Jorge 92.1
Ahn 91.5
Oluban 90.6
Chi 88.9
Minale 88.1
Bell 87.3
![Page 9: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/9.jpg)
Insight Through Computing 9
The “bubble” process
30
50
10
60
40
20Compare adjacent values.Swap if “out of order.”
![Page 10: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/10.jpg)
Insight Through Computing 10
The “bubble” process
30
50
10
60
20
40
Compare adjacent values.Swap if “out of order.”
![Page 11: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/11.jpg)
Insight Through Computing 11
The “bubble” process
30
50
10
20
60
40
Compare adjacent values.Swap if “out of order.”
![Page 12: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/12.jpg)
Insight Through Computing 12
The “bubble” process
30
50
10
20
60
40
Compare adjacent values.Swap if “out of order.”
![Page 13: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/13.jpg)
Insight Through Computing 13
The “bubble” process
30
10
50
20
60
40
Compare adjacent values.Swap if “out of order.”
![Page 14: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/14.jpg)
Insight Through Computing 14
The “bubble” process
10
30
50
20
60
40
The smallest (lightest) value “bubbles” to the top
Done in one pass through the vector
Bubble.m
![Page 15: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/15.jpg)
Insight Through Computing 15
The second “bubble” process
10
30
50
20
60
40Compare adjacent values.Swap if “out of order.”
![Page 16: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/16.jpg)
Insight Through Computing 16
The second “bubble” process
10
30
50
20
40
60
Compare adjacent values.Swap if “out of order.”
![Page 17: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/17.jpg)
Insight Through Computing 17
The second “bubble” process
10
30
50
20
40
60
Compare adjacent values.Swap if “out of order.”
![Page 18: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/18.jpg)
Insight Through Computing 18
The second “bubble” process
10
50
30
20
40
60
Compare adjacent values.Swap if “out of order.”
![Page 19: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/19.jpg)
Insight Through Computing 19
The second “bubble” process
10
50
20
30
40
60
After two bubble processes, the first two components are sorted.
Repeatedly apply the bubble process to sort the whole array
![Page 20: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/20.jpg)
Insight Through Computing 20
Sort vector x using the Bubble Sort algorithm
Apply Bubble to x: [x,C,S] = Bubble(x)
x
![Page 21: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/21.jpg)
Insight Through Computing 21
Sort vector x using the Bubble Sort algorithm
Bubble x: [x,C,S] = Bubble(x)
x
Bubble x(2:6): [x(2:6),C,S] = Bubble(x(2:6))
Bubble x(3:6): [x(3:6),C,S] = Bubble(x(3:6))
Bubble x(4:6): [x(4:6),C,S] = Bubble(x(4:6))
Bubble x(5:6): [x(5:6),C,S] = Bubble(x(5:6))
BubbleSort1.m
![Page 22: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/22.jpg)
Insight Through Computing 22
Possible to get a sorted vector before n-1 “bubble” processes
10
50
20
30
40
60
After 2 bubble processes…
Start 3rd bubble process
![Page 23: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/23.jpg)
Insight Through Computing 23
Possible to get a sorted vector before n-1 “bubble” processes
10
50
20
30
40
60
In the 3rd bubble process
![Page 24: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/24.jpg)
Insight Through Computing 24
Possible to get a sorted vector before n-1 “bubble” processes
10
40
20
30
50
60
In the 3rd bubble process
![Page 25: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/25.jpg)
Insight Through Computing 25
Possible to get a sorted vector before n-1 “bubble” processes
10
40
20
30
50
60
After the 3rd bubble process
Vector is completely sorted (in this example)
How to improve BubbleSort to quit early?
![Page 26: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/26.jpg)
Insight Through Computing 26
Possible to get a sorted vector before n-1 “bubble” processes
10
40
20
30
50
60
After the 3rd bubble process
Vector is completely sorted (in this example)
How to improve BubbleSort to quit early?
Keep track of the swaps! No swap is done when vector is sorted.
BubbleSort.m
![Page 27: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/27.jpg)
Insight Through Computing 27
The Insertion Process
Given a sorted array x, insert a number y such that the result is sorted
2 3 6 98
2 3 6 9 8
![Page 28: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/28.jpg)
Insight Through Computing 28
2 3 6 9 8
2 3 6 98 Just swap 8 & 9
Insertion
![Page 29: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/29.jpg)
Insight Through Computing 29
2 3 6 98
2 3 6 9 8
2 3 6 98
Insertion
![Page 30: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/30.jpg)
Insight Through Computing 30
42 3 6 98
2 3 6 9 8
2 3 6 98
Compare adjacent components:swap 9 & 4
Insertion
![Page 31: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/31.jpg)
Insight Through Computing 31
4
2 3 6 98 4
2 3 6 98
2 3 6 9 8
2 3 6 98
Compare adjacent components:swap 8 & 4
Insertion
![Page 32: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/32.jpg)
Insight Through Computing 32
4
2 3 6 98 4
2 3 6 984
2 3 6 98
2 3 6 9 8
2 3 6 98
Compare adjacent components:swap 6 & 4
Insertion
![Page 33: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/33.jpg)
Insight Through Computing 33
4
2 3 6 98 4
2 3 6 984
2 3 6 984
2 3 6 98
2 3 6 9 8
2 3 6 98
Compare adjacent components:DONE! No more swaps.
Insertion
Insert.m
![Page 34: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/34.jpg)
Insight Through Computing 34
Sort vector x using the Insertion Sort algorithm
Insert x(2): [x(1:2),C,S] = Insert(x(1:2))
x
Need to start with a sorted subvector. How do you find one?
Insert x(3): [x(1:3),C,S] = Insert(x(1:3))
Insert x(4): [x(1:4),C,S] = Insert(x(1:4))
Insert x(5): [x(1:5),C,S] = Insert(x(1:5))
Insert x(6): [x(1:6),C,S] = Insert(x(1:6))
Length 1 subvector is “sorted”
InsertionSort.m
![Page 35: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/35.jpg)
Insight Through Computing 35
Bubble Sort vs. Insertion Sort
Both involve comparing adjacent values and swaps
On average, which is more efficient?
A. Bubble Sort B. Insertion Sort C. They’re the same
![Page 36: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/36.jpg)
Insight Through Computing 36
Other efficiency considerations
Worst case, best case, average case Use of subfunction incurs an “overhead” Memory use and access
Example: Rather than directing the insert process to a subfunction, have it done “in-line.”
Also, Insertion sort can be done “in-place,” i.e., using “only” the memory space of the original vector.
![Page 37: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/37.jpg)
Insight Through Computing 37
function x = insertSort(x)% Sort vector x in ascending order with insertion sort n = length(x);for i= 1:n-1 % Sort x(1:i+1) given that x(1:i) is sorted
end
![Page 38: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/38.jpg)
Insight Through Computing 38
function x = insertSort(x)% Sort vector x in ascending order with insertion sort n = length(x);for i= 1:n-1 % Sort x(1:i+1) given that x(1:i) is sorted j= i; need2swap= while need2swap
% swap x(j+1) and x(j)
j= j-1; need2swap= endend
![Page 39: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/39.jpg)
Insight Through Computing 39
function x = insertSort(x)% Sort vector x in ascending order with insertion sort n = length(x);for i= 1:n-1 % Sort x(1:i+1) given that x(1:i) is sorted j= i; need2swap= x(j+1) < x(j); while need2swap
% swap x(j+1) and x(j)
j= j-1; need2swap= j>0 && x(j+1)<x(j); endend
![Page 40: 30. Sorting 1-dimensional Arrays](https://reader035.vdocuments.us/reader035/viewer/2022070411/568147bf550346895db4ff3f/html5/thumbnails/40.jpg)
Insight Through Computing 40
function x = insertSort(x)% Sort vector x in ascending order with insertion sort n = length(x);for i= 1:n-1 % Sort x(1:i+1) given that x(1:i) is sorted j= i; need2swap= x(j+1) < x(j); while need2swap
% swap x(j+1) and x(j) temp= x(j); x(j)= x(j+1); x(j+1)= temp;
j= j-1; need2swap= j>0 && x(j+1)<x(j); endend