Compsci 201 201 More Sorti ting, B Backtra ktracking Par art 1 1 of
- f 4
4/3/2020 Compsci 201, Spring 2020 1
Compsci 201 201 More Sorti ting, B Backtra ktracking Par art 1 - - PowerPoint PPT Presentation
Compsci 201 201 More Sorti ting, B Backtra ktracking Par art 1 1 of of 4 Susan Rodger April 3, 2020 4/3/2020 Compsci 201, Spring 2020 1 T is for Alan Turing, Turing Test, Turing award From WWII to philosophy to math to
4/3/2020 Compsci 201, Spring 2020 1
4/3/2020 Compsci 201, Spring 2020 2
4/1/2020 Compsci 201, Spring 2020 3
4/3/2020 Compsci 201, Spring 2020 4
4/3/2020 Compsci 201, Spring 2020 5
*this isn't everyone's opinion, but it should be
4/3/2020 Compsci 201, Spring 2020 6
4/3/2020 Compsci 201, Spring 2020 7
th pass, [0,j) is
4/3/2020 Compsci 201, Spring 2020 8
public void sort(List<T> list) { for(int j=0; j < list.size()-1; j++) { int min = j; for(int k=j+1; k < list.size(); k++) { if (list.get(k).compareTo(list.get(min)) < 0){ min = k; } } swap(list,min,j); } } Final order unexamined j
4/3/2020 Compsci 201, Spring 2020 9
4/3/2020 Compsci 201, Spring 2020 10
4/3/2020 Compsci 201, Spring 2020 11
4/3/2020 Compsci 201, Spring 2020 12
4/3/2020 Compsci 201, Spring 2020 13
Compsci 201, Spring 2020 14 4/3/2020
16 Compsci 201, Spring 2020 4/3/2020
18 Compsci 201, Spring 2020 4/3/2020
27 4/3/2020 Compsci 201, Spring 2020
28 4/3/2020 Compsci 201, Spring 2020
Compsci 201, Spring 2020 30 4/3/2020
Compsci 201, Spring 2020 31 4/3/2020
pivot index
4/3/2020 Compsci 201, Spring 2020 33
void doQuick(List<T> list, int first, int last) { if (first >= last) return; int piv = pivot(list,first,last); doQuick(list,first,piv-1); doQuick(list,piv+1,last); }
pivot index
4/3/2020 Compsci 201, Spring 2020 34
private int pivot(List<T> list, int first, int last){ T piv = list.get(first); int p = first; for(int k=first+1; k <= last; k++){ if (list.get(k).compareTo(piv) <= 0){ p++; swap(list,k,p); } } swap(list,p,first); return p; }
<= [first]
??? k first
> [first]
p
https://www.youtube.com/watch?v=NVIjHj-lrT4
4/3/2020 Compsci 201, Spring 2020 35
4/3/2020 Compsci 201, Spring 2020 36
4/3/2020 Compsci 201, Spring 2020 37
There’s nothing that I am better at than everyone else, except being me. There’s no secret to being me. Follow your interests and work hard at them. Then you will play bass better, program better, cook better, ride motorcycles better, or anything else that you really want to do.
4/3/2020 Compsci 201, Spring 2020 38
https://lifehacker.com/im-brian-fox-author-of-the-bash-shell-and-this-is-how-1820510600
4/3/2020 Compsci 201, Spring 2020 39
4/3/2020 Compsci 201, Spring 2020 40
4/3/2020 Compsci 201, Spring 2020 41
0 1 2 3 4 5 6 7 8 9 10 11
4/3/2020 Compsci 201, Spring 2020 42
0 1 2 3 4 5 6 7 8 9 10 11
4/3/2020 Compsci 201, Spring 2020 43
0 1 2 3 4 5 6 7 8 9 10 11
4/3/2020 Compsci 201, Spring 2020 45
0 1 2 3 4 5 6 7 8 9 10 11
4/3/2020 Compsci 201, Spring 2020 47
4/3/2020 Compsci 201, Spring 2020 48
0 1 2 3 4 5 6 7 8 9 10 11
4/3/2020 Compsci 201, Spring 2020 49
4/3/2020 Compsci 201, Spring 2020 50
0 1 2 3 4 5 6 7 8 9 10 11
4/3/2020 Compsci 201, Spring 2020 59
0 1 2 3 4 5 6 7 8 9 10 11
4/3/2020 Compsci 201, Spring 2020 61
4/3/2020 Compsci 201, Spring 2020 62
0 1 2 3 4 5 6 7 8 9 10 11
4/3/2020 Compsci 201, Spring 2020 69
0 1 2 3 4 5 6 7 8 9 10 11
4/3/2020 Compsci 201, Spring 2020 71
4/3/2020 Compsci 201, Spring 2020 72
4/3/2020 Compsci 201, Spring 2020 73
4/3/2020 Compsci 201, Spring 2020 74
4/3/2020 Compsci 201, Spring 2020 75
4/3/2020 Compsci 201, Spring 2020 76
4/3/2020 Compsci 201, Spring 2020 77
4/3/2020 Compsci 201, Spring 2020 78
4/3/2020 Compsci 201, Spring 2020 79
4/3/2020 Compsci 201, Spring 2020 80
4/3/2020 Compsci 201, Spring 2020 81
(italics ola’s)
(continued)
I am quite capable of squaring N with or without a calculator, and I know how long my sorts will bubble. I can type every form of bubble sort into a text editor from memory. If I am writing some quick code and I need a sort quick, as opposed to a quick sort, I just type in the bubble sort as if it were a statement. I'm done with it before I could look up the data type of the third argument to the quicksort library. I have a dual-processor 1.2 GHz Powermac and it sneers at your N squared for most interesting values of N. And my source code is smaller than yours.
4/3/2020 Compsci 201, Spring 2020 87
4/3/2020 Compsci 201, Spring 2020 88
4/3/2020 Compsci 201, Spring 2020 90
4/3/2020 Compsci 201, Spring 2020 91
4/3/2020 Compsci 201, Spring 2020 92
4/3/2020 Compsci 201, Spring 2020 93
4/3/2020 Compsci 201, Spring 2020 94
4/3/2020 Compsci 201, Spring 2020 95
4/3/2020 Compsci 201, Spring 2020 96
https://coursework.cs.duke.edu/201spring20/backtracking-sp20/
4/3/2020 Compsci 201, Spring 2020 97
4/3/2020 Compsci 201, Spring 2020 98
4/3/2020 Compsci 201, Spring 2020 99
4/3/2020 Compsci 201, Spring 2020 101
4/3/2020 Compsci 201, Spring 2020 102
4/3/2020 Compsci 201, Spring 2020 103
4/3/2020 Compsci 201, Spring 2020 104
4/3/2020 Compsci 201, Spring 2020 105
4/3/2020 Compsci 201, Spring 2020 106
– Make move and ask …
4/3/2020 Compsci 201, Spring 2020 107
private int winCount(char[][] board) { int wins = 0; for(int r=0; r < 4; r++){ for(int c=0; c < 4; c++){ if (canMove(board,r,c)){ board[r][c] = 'X'; int opponentWins = winCount(board); if (opponentWins == 0){ wins += 1; } board[r][c] = '.'; } } } return wins; }
4/3/2020 Compsci 201, Spring 2020 108
Make a move, ask oracle (recursion) how many winners after move? Oracle tries all moves and says none … meaning made move winner
4/3/2020 Compsci 201, Spring 2020 109
private int winCount(char[][] board) { int wins = 0; for(int r=0; r < 4; r++){ for(int c=0; c < 4; c++){ if (canMove(board,r,c)){ board[r][c] = 'X'; int opponentWins = winCount(board); if (opponentWins == 0){ wins += 1; } board[r][c] = '.'; } } } return wins; }
4/3/2020 Compsci 201, Spring 2020 111
4/3/2020 Compsci 201, Spring 2020 112
4/3/2020 Compsci 201, Spring 2020 113
4/3/2020 Compsci 201, Spring 2020 114