Algorithm Design and Analysis CS 214
Dominik Scheder dominik@cs.sjtu.edu.cn SEIEE Building 3, Room 526
http://basics.sjtu.edu.cn/~dominik/teaching/
Algorithm Design and Analysis CS 214 Dominik Scheder - - PowerPoint PPT Presentation
Algorithm Design and Analysis CS 214 Dominik Scheder dominik@cs.sjtu.edu.cn SEIEE Building 3, Room 526 http://basics.sjtu.edu.cn/~dominik/teaching/ Algorithm Design and Analysis CS 214 Dominik Scheder dominik@cs.sjtu.edu.cn SEIEE Building
Algorithm Design and Analysis CS 214
Dominik Scheder dominik@cs.sjtu.edu.cn SEIEE Building 3, Room 526
http://basics.sjtu.edu.cn/~dominik/teaching/
Algorithm Design and Analysis CS 214
Dominik Scheder dominik@cs.sjtu.edu.cn SEIEE Building 3, Room 526
http://basics.sjtu.edu.cn/~dominik/teaching/
Algorithm Design and Analysis CS 214
Dominik Scheder dominik@cs.sjtu.edu.cn SEIEE Building 3, Room 526
http://basics.sjtu.edu.cn/~dominik/teaching/
Algorithm Design and Analysis CS 214
Dominik Scheder dominik@cs.sjtu.edu.cn SEIEE Building 3, Room 526
http://basics.sjtu.edu.cn/~dominik/teaching/
Grading and Homework
Grading and Homework
Grading: 40% homework assignment, 60 % final exam
Grading and Homework
Grading: 40% homework assignment, 60 % final exam Homework:
Grading and Homework
Grading: 40% homework assignment, 60 % final exam Homework: Handed out every two weeks
Grading and Homework
Grading: 40% homework assignment, 60 % final exam Homework: Handed out every two weeks You work on it in small groups (3-4 people)
Grading and Homework
Grading: 40% homework assignment, 60 % final exam Homework: Handed out every two weeks You work on it in small groups (3-4 people) Hand it back to me or Zhengyang a week later
Grading and Homework
Grading: 40% homework assignment, 60 % final exam Homework: Handed out every two weeks You work on it in small groups (3-4 people) Hand it back to me or Zhengyang a week later Each group presents solution at some point
Grading and Homework
Grading: 40% homework assignment, 60 % final exam Homework: Handed out every two weeks You work on it in small groups (3-4 people) Hand it back to me or Zhengyang a week later Each group presents solution at some point Please form small groups until next week!
Textbook
Algorithms Sanjoy Dasgupta Christos Papadimitriou Umesh Vazirani
Which programming languages do you know? Which algorithms do you know? (What is their running time?)
What are Algorithms?
What are Algorithms?
Example 1: A bad algorithm
What are Algorithms?
Example 1: A bad algorithm Example 2: A good algorithm
An Algorithmic Example
Ye Zihao Li Huichen Xie Tiancheng Bai Yiwei Cai Wanxin Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Ye Zihao Li Huichen Xie Tiancheng Bai Yiwei Cai Wanxin Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Ye Zihao Li Huichen Xie Tiancheng Bai Yiwei Cai Wanxin Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Li Huichen Ye Zihao Xie Tiancheng Bai Yiwei Cai Wanxin Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Li Huichen Ye Zihao Xie Tiancheng Bai Yiwei Cai Wanxin Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Li Huichen Ye Zihao Xie Tiancheng Bai Yiwei Cai Wanxin Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Li Huichen Xie Tiancheng Ye Zihao Bai Yiwei Cai Wanxin Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Li Huichen Xie Tiancheng Ye Zihao Bai Yiwei Cai Wanxin Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Li Huichen Xie Tiancheng Ye Zihao Bai Yiwei Cai Wanxin Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng Li Huichen Xie Tiancheng Ye Zihao Bai Yiwei Cai Wanxin Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Li Huichen Xie Tiancheng Ye Zihao Bai Yiwei Cai Wanxin Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng Li Huichen Xie Tiancheng Ye Zihao Bai Yiwei Cai Wanxin Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Li Huichen Xie Tiancheng Ye Zihao Bai Yiwei Cai Wanxin Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng Li Huichen Xie Tiancheng Ye Zihao Bai Yiwei Cai Wanxin Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Li Huichen Xie Tiancheng Bai Yiwei Ye Zihao Cai Wanxin Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Li Huichen Xie Tiancheng Bai Yiwei Ye Zihao Cai Wanxin Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Li Huichen Bai Yiwei Xie Tiancheng Ye Zihao Cai Wanxin Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Li Huichen Bai Yiwei Xie Tiancheng Ye Zihao Cai Wanxin Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Bai Yiwei Li Huichen Xie Tiancheng Ye Zihao Cai Wanxin Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Bai Yiwei Li Huichen Xie Tiancheng Ye Zihao Cai Wanxin Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Bai Yiwei Li Huichen Xie Tiancheng Ye Zihao Cai Wanxin Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Bai Yiwei Li Huichen Xie Tiancheng Cai Wanxin Ye Zihao Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Bai Yiwei Li Huichen Xie Tiancheng Cai Wanxin Ye Zihao Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Bai Yiwei Li Huichen Cai Wanxin Xie Tiancheng Ye Zihao Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Bai Yiwei Li Huichen Cai Wanxin Xie Tiancheng Ye Zihao Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Bai Yiwei Cai Wanxin Li Huichen Xie Tiancheng Ye Zihao Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Bai Yiwei Cai Wanxin Li Huichen Xie Tiancheng Ye Zihao Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Bai Yiwei Cai Wanxin Li Huichen Xie Tiancheng Ye Zihao Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Bai Yiwei Cai Wanxin Li Huichen Xie Tiancheng Ye Zihao Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Bai Yiwei Cai Wanxin Li Huichen Xie Tiancheng Ye Zihao Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Bai Yiwei Cai Wanxin Li Huichen Xie Tiancheng Ye Zihao Yu Hongzhong Xu Xiaojun Qiu Zhi Li Yunqi Zhao Xueyuan Liu Zhijian Wan Cheng Zhou Yuhao Zhu Qiuming Liu Haoming Lu Yizhou Tang Shuyang Xue Zhendong Gao Bicheng Sun Xingyuan Yang Runzhe You Xiaotian Zhang Xuan Chen Lequn Chen Tianyao Ke Songyu Huang Yuxiang Xu Shichao Qiu Wei Huang Junxiang Xu Bowen Pu Yifei You Yurong Zhang Jiaheng
Physical Exercise!
Analyzing Insertion Sort
blackboard
Analyzing Insertion Sort
Analyzing Insertion Sort
Sorting n items can require up to n(n−1)
2
comparisons.
Analyzing Insertion Sort
Sorting n items can require up to n(n−1)
2
comparisons. This class Set Size Comparisons
Analyzing Insertion Sort
Sorting n items can require up to n(n−1)
2
comparisons. This class 34 Set Size Comparisons
Analyzing Insertion Sort
Sorting n items can require up to n(n−1)
2
comparisons. This class 34 Set Size Comparisons 561
Analyzing Insertion Sort
Sorting n items can require up to n(n−1)
2
comparisons. This class 34 Set Size Comparisons 561 Jiaotong students
Analyzing Insertion Sort
Sorting n items can require up to n(n−1)
2
comparisons. This class 34 Set Size Comparisons 561 Jiaotong students 41297
Analyzing Insertion Sort
Sorting n items can require up to n(n−1)
2
comparisons. This class 34 Set Size Comparisons 561 Jiaotong students 41297 852,700,456
Analyzing Insertion Sort
Sorting n items can require up to n(n−1)
2
comparisons. This class 34 Set Size Comparisons 561 Jiaotong students 41297 852,700,456 Runtime
Analyzing Insertion Sort
Sorting n items can require up to n(n−1)
2
comparisons. This class 34 Set Size Comparisons 561 Jiaotong students 41297 852,700,456 Runtime 1 second
Analyzing Insertion Sort
Sorting n items can require up to n(n−1)
2
comparisons. This class 34 Set Size Comparisons 561 Jiaotong students 41297 852,700,456 Runtime 1 second Shanghai Residents
Analyzing Insertion Sort
Sorting n items can require up to n(n−1)
2
comparisons. This class 34 Set Size Comparisons 561 Jiaotong students 41297 852,700,456 Runtime 1 second Shanghai Residents 24 mio
Analyzing Insertion Sort
Sorting n items can require up to n(n−1)
2
comparisons. This class 34 Set Size Comparisons 561 Jiaotong students 41297 852,700,456 Runtime 1 second Shanghai Residents 24 mio 294 × 1012
Analyzing Insertion Sort
Sorting n items can require up to n(n−1)
2
comparisons. This class 34 Set Size Comparisons 561 Jiaotong students 41297 852,700,456 Runtime 1 second Shanghai Residents 24 mio 294 × 1012 95 hours
Faster computers don’t solve this problem.
Faster computers don’t solve this problem. Better algorithms do.
A smarter sorting algorithm
Bai Yiwei
Bai Yiwei
Bai Yiwei
Bai Yiwei Cai Wanxin
Bai Yiwei Cai Wanxin
Bai Yiwei Cai Wanxin
Bai Yiwei Cai Wanxin Chen Lequn
Bai Yiwei Cai Wanxin Chen Lequn
Bai Yiwei Cai Wanxin Chen Lequn
Bai Yiwei Cai Wanxin Chen Lequn
Bai Yiwei Cai Wanxin Chen Lequn
How do we sort the two halves?
Merge sort
Merge sort
Y, L, X, B, C, Q, Z, T
Merge sort
Y, L, X, B, C, Q, Z, T
Merge sort
Y, L, X, B, C, Q, Z, T Y, L, X, B C, Q, Z, T
Merge sort
Y, L, X, B, C, Q, Z, T Y, L, X, B C, Q, Z, T
Merge sort
Y, L, X, B, C, Q, Z, T Y, L, X, B C, Q, Z, T Y, L X, B
Merge sort
Y, L, X, B, C, Q, Z, T Y, L, X, B C, Q, Z, T Y, L X, B Y L
Merge sort
Y, L, X, B, C, Q, Z, T Y, L, X, B C, Q, Z, T Y, L X, B Y L L,Y
Merge sort
Y, L, X, B, C, Q, Z, T Y, L, X, B C, Q, Z, T Y, L X, B Y L L,Y X B
Merge sort
Y, L, X, B, C, Q, Z, T Y, L, X, B C, Q, Z, T Y, L X, B Y L L,Y X B B,X
Merge sort
Y, L, X, B, C, Q, Z, T Y, L, X, B C, Q, Z, T Y, L X, B Y L L,Y X B B,X B, L, X, Y
Merge sort
Y, L, X, B, C, Q, Z, T Y, L, X, B C, Q, Z, T Y, L X, B Y L L,Y X B B,X B, L, X, Y
Merge sort
Y, L, X, B, C, Q, Z, T Y, L, X, B C, Q, Z, T Y, L X, B Y L L,Y X B B,X B, L, X, Y C, Q Z, T
Merge sort
Y, L, X, B, C, Q, Z, T Y, L, X, B C, Q, Z, T Y, L X, B Y L L,Y X B B,X B, L, X, Y C, Q Z, T C Q
Merge sort
Y, L, X, B, C, Q, Z, T Y, L, X, B C, Q, Z, T Y, L X, B Y L L,Y X B B,X B, L, X, Y C, Q Z, T C Q C,Q
Merge sort
Y, L, X, B, C, Q, Z, T Y, L, X, B C, Q, Z, T Y, L X, B Y L L,Y X B B,X B, L, X, Y C, Q Z, T C Q C,Q Z T
Merge sort
Y, L, X, B, C, Q, Z, T Y, L, X, B C, Q, Z, T Y, L X, B Y L L,Y X B B,X B, L, X, Y C, Q Z, T C Q C,Q Z T T,Z
Merge sort
Y, L, X, B, C, Q, Z, T Y, L, X, B C, Q, Z, T Y, L X, B Y L L,Y X B B,X B, L, X, Y C, Q Z, T C Q C,Q Z T T,Z C, Q, T, Z
Merge sort
Y, L, X, B, C, Q, Z, T Y, L, X, B C, Q, Z, T Y, L X, B Y L L,Y X B B,X B, L, X, Y C, Q Z, T C Q C,Q Z T T,Z C, Q, T, Z B, C, L, Q, T, X, Y, Z
Pseudocode for Mergesort
Pseudocode for Mergesort
mergesort(array X):
– A := mergesort (X [1 . . . ⌊n/2⌋]) – B := mergesort (X [⌊n/2⌋ + 1 . . . n]) – return merge(A, B)
Pseudocode for Mergesort
mergesort(array X):
– A := mergesort (X [1 . . . ⌊n/2⌋]) – B := mergesort (X [⌊n/2⌋ + 1 . . . n]) – return merge(A, B)
Pseudocode for merge
Pseudocode for merge
merge(A, B):
How long does it take?
How long does it take? How many comparisons does it take?
How long does it take? How many comparisons does it take?
merge(A, B) requires at most |A| + |B| − 1 comparisons.
How long does it take? How many comparisons does it take?
merge(A, B) requires at most |A| + |B| − 1 comparisons.
blackboard
Y, L, X, B, C, Q, Z, T Y, L, X, B C, Q, Z, T Y, L X, B Y L L,Y X B B,X B, L, X, Y C, Q Z, T C Q C,Q Z T T,Z C, Q, T, Z B, C, L, Q, T, X, Y, Z
Y, L, X, B, C, Q, Z, T Y, L, X, B C, Q, Z, T Y, L X, B Y L L,Y X B B,X B, L, X, Y C, Q Z, T C Q C,Q Z T T,Z C, Q, T, Z B, C, L, Q, T, X, Y, Z
4 × 1
Y, L, X, B, C, Q, Z, T Y, L, X, B C, Q, Z, T Y, L X, B Y L L,Y X B B,X B, L, X, Y C, Q Z, T C Q C,Q Z T T,Z C, Q, T, Z B, C, L, Q, T, X, Y, Z
4 × 1 2 × 3
Y, L, X, B, C, Q, Z, T Y, L, X, B C, Q, Z, T Y, L X, B Y L L,Y X B B,X B, L, X, Y C, Q Z, T C Q C,Q Z T T,Z C, Q, T, Z B, C, L, Q, T, X, Y, Z
4 × 1 2 × 3 1 × 7
If n = 2d . . .
If n = 2d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
If n = 2d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
n 2 × 1
If n = 2d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
n 2 × 1
. . .
If n = 2d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
n 2 × 1
. . .
n 4 × 3
If n = 2d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
n 2 × 1
. . .
n 4 × 3 n 8 × 7
If n = 2d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
n 2 × 1
. . .
n 4 × 3 n 8 × 7
Blackboard
Mergesort requires at most n⌈log(n)⌉ comparisons.
This class 34 Set Size Steps 561 Jiaotong students 41297 852 mio Runtime 1 second Shanghai Residents 24 mio 294 × 1012 95 hours insertion sort:
n(n−1) 2This class 34 Set Size Steps 561 Jiaotong students 41297 852 mio Runtime 1 second Shanghai Residents 24 mio 294 × 1012 95 hours insertion sort:
n(n−1) 2mergesort: n⌈log(n)⌉
This class 34 Set Size Steps 561 Jiaotong students 41297 852 mio Runtime 1 second Shanghai Residents 24 mio 294 × 1012 95 hours insertion sort:
n(n−1) 2mergesort: n⌈log(n)⌉ Steps Runtime
This class 34 Set Size Steps 561 Jiaotong students 41297 852 mio Runtime 1 second Shanghai Residents 24 mio 294 × 1012 95 hours insertion sort:
n(n−1) 2mergesort: n⌈log(n)⌉ Steps Runtime 204
This class 34 Set Size Steps 561 Jiaotong students 41297 852 mio Runtime 1 second Shanghai Residents 24 mio 294 × 1012 95 hours insertion sort:
n(n−1) 2mergesort: n⌈log(n)⌉ Steps Runtime 204 660,752 600 mio
This class 34 Set Size Steps 561 Jiaotong students 41297 852 mio Runtime 1 second Shanghai Residents 24 mio 294 × 1012 95 hours insertion sort:
n(n−1) 2mergesort: n⌈log(n)⌉ Steps Runtime 204 660,752 600 mio 1 second
This class 34 Set Size Steps 561 Jiaotong students 41297 852 mio Runtime 1 second Shanghai Residents 24 mio 294 × 1012 95 hours insertion sort:
n(n−1) 2mergesort: n⌈log(n)⌉ Steps Runtime 204 660,752 600 mio 1 second 15 minutes
This class 34 Set Size Steps 561 Jiaotong students 41297 852 mio Runtime 1 second Shanghai Residents 24 mio 294 × 1012 95 hours insertion sort:
n(n−1) 2mergesort: n⌈log(n)⌉ Steps Runtime 204 660,752 600 mio 1 second 15 minutes fast computer bad algorithm
This class 34 Set Size Steps 561 Jiaotong students 41297 852 mio Runtime 1 second Shanghai Residents 24 mio 294 × 1012 95 hours insertion sort:
n(n−1) 2mergesort: n⌈log(n)⌉ Steps Runtime 204 660,752 600 mio 1 second 15 minutes fast computer bad algorithm slow computer good algorithm
What will study this semester?
What will study this semester?
What will study this semester?
Sorting algorithms
What will study this semester?
Sorting algorithms Algorithms for numbers, matrices;
What will study this semester?
Sorting algorithms Algorithms for numbers, matrices; “algebraic algorithms”
What will study this semester?
Sorting algorithms Algorithms for numbers, matrices; “algebraic algorithms” Graph algorithms
What will study this semester?
Sorting algorithms Algorithms for numbers, matrices; “algebraic algorithms” Graph algorithms
Optimization algorithms
What will study this semester?
What will study this semester?
What will study this semester?
Divide-and-conquer algorithms (like mergesort)
What will study this semester?
Divide-and-conquer algorithms (like mergesort) Greedy algorithms (always do the next best thing)
What will study this semester?
Divide-and-conquer algorithms (like mergesort) Greedy algorithms (always do the next best thing) Dynamic programming (recursion unrolled)
What will study this semester?
Divide-and-conquer algorithms (like mergesort) Greedy algorithms (always do the next best thing) Dynamic programming (recursion unrolled) many more . . .
What will study this semester?
What will study this semester?
Is our algorithm correct?
What will study this semester?
Is our algorithm correct? How fast is it?
What will study this semester?
Is our algorithm correct? How fast is it? How much memory does it use?
What will study this semester?
Is our algorithm correct? How fast is it? How much memory does it use?
Efficiency
What will study this semester?
Is our algorithm correct? How fast is it? How much memory does it use? Are there more efficient algorithms?
Efficiency
What will study this semester?
Why should we study algorithms?
Why should we study algorithms?
Most algorithms are already implemented in a library.
Why should we study algorithms?
Most algorithms are already implemented in a library. If I can implement an algorithm, why must I understand the proof of (1) correctness; (2) running time?
Why should we study algorithms?
Most algorithms are already implemented in a library. If I can implement an algorithm, why must I understand the proof of (1) correctness; (2) running time? You will always face new problems for which your library has no implemented solution!