Post on 30-Apr-2020
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 DasguptaChristos 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
Sorting
Ye ZihaoLi HuichenXie TianchengBai YiweiCai WanxinYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Ye ZihaoLi HuichenXie TianchengBai YiweiCai WanxinYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Ye ZihaoLi HuichenXie TianchengBai YiweiCai WanxinYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Li HuichenYe ZihaoXie TianchengBai YiweiCai WanxinYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Li HuichenYe ZihaoXie TianchengBai YiweiCai WanxinYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Li HuichenYe ZihaoXie TianchengBai YiweiCai WanxinYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Li HuichenXie TianchengYe ZihaoBai YiweiCai WanxinYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Li HuichenXie TianchengYe ZihaoBai YiweiCai WanxinYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Li HuichenXie TianchengYe ZihaoBai YiweiCai WanxinYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Li HuichenXie TianchengYe ZihaoBai YiweiCai WanxinYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Li HuichenXie TianchengYe ZihaoBai YiweiCai WanxinYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Li HuichenXie TianchengYe ZihaoBai YiweiCai WanxinYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Li HuichenXie TianchengYe ZihaoBai YiweiCai WanxinYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Li HuichenXie TianchengYe ZihaoBai YiweiCai WanxinYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Li HuichenXie TianchengBai YiweiYe ZihaoCai WanxinYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Li HuichenXie TianchengBai YiweiYe ZihaoCai WanxinYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Li HuichenBai YiweiXie TianchengYe ZihaoCai WanxinYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Li HuichenBai YiweiXie TianchengYe ZihaoCai WanxinYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Bai YiweiLi HuichenXie TianchengYe ZihaoCai WanxinYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Bai YiweiLi HuichenXie TianchengYe ZihaoCai WanxinYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Bai YiweiLi HuichenXie TianchengYe ZihaoCai WanxinYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Bai YiweiLi HuichenXie TianchengCai WanxinYe ZihaoYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Bai YiweiLi HuichenXie TianchengCai WanxinYe ZihaoYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Bai YiweiLi HuichenCai WanxinXie TianchengYe ZihaoYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Bai YiweiLi HuichenCai WanxinXie TianchengYe ZihaoYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Bai YiweiCai WanxinLi HuichenXie TianchengYe ZihaoYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Bai YiweiCai WanxinLi HuichenXie TianchengYe ZihaoYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Bai YiweiCai WanxinLi HuichenXie TianchengYe ZihaoYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Bai YiweiCai WanxinLi HuichenXie TianchengYe ZihaoYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Bai YiweiCai WanxinLi HuichenXie TianchengYe ZihaoYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Bai YiweiCai WanxinLi HuichenXie TianchengYe ZihaoYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang 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
Ye ZihaoLi HuichenXie TianchengBai YiweiCai WanxinYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
Ye ZihaoLi HuichenXie TianchengBai YiweiCai WanxinYu HongzhongXu XiaojunQiu ZhiLi YunqiZhao XueyuanLiu ZhijianWan ChengZhou YuhaoZhu QiumingLiu HaomingLu YizhouTang Shuyang
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
1. Sort the first half
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
1. Sort the first half
Bai YiweiCai WanxinLi HuichenLi YunqiLiu HaomingLiu ZhijianLu YizhouQiu ZhiTang Shuyang WanChengXie TianchengXu XiaojunYe ZihaoYu HongzhongZhao XueyuanZhou YuhaoZhu Qiuming
Xue ZhendongGao BichengSun XingyuanYang RunzheYou XiaotianZhang XuanChen LequnChen TianyaoKe SongyuHuang YuxiangXu ShichaoQiu WeiHuang JunxiangXu BowenPu YifeiYou YurongZhang Jiaheng
1. Sort the first half
Bai YiweiCai WanxinLi HuichenLi YunqiLiu HaomingLiu ZhijianLu YizhouQiu ZhiTang Shuyang WanChengXie TianchengXu XiaojunYe ZihaoYu HongzhongZhao XueyuanZhou YuhaoZhu Qiuming
2. Sort the second half
1. Sort the first half
Bai YiweiCai WanxinLi HuichenLi YunqiLiu HaomingLiu ZhijianLu YizhouQiu ZhiTang Shuyang WanChengXie TianchengXu XiaojunYe ZihaoYu HongzhongZhao XueyuanZhou YuhaoZhu Qiuming
2. Sort the second half
Chen LequnChen TianyaoGao BichengHuang JunxiangHuang YuxiangKe SongyuPu YifeiQiu WeiSun XingyuanXu BowenXu ShichaoXue ZhendongYang RunzheYou XiaotianYou YurongZhang JiahengZhang Xuan
1. Sort the first half
Bai YiweiCai WanxinLi HuichenLi YunqiLiu HaomingLiu ZhijianLu YizhouQiu ZhiTang Shuyang WanChengXie TianchengXu XiaojunYe ZihaoYu HongzhongZhao XueyuanZhou YuhaoZhu Qiuming
2. Sort the second half
Chen LequnChen TianyaoGao BichengHuang JunxiangHuang YuxiangKe SongyuPu YifeiQiu WeiSun XingyuanXu BowenXu ShichaoXue ZhendongYang RunzheYou XiaotianYou YurongZhang JiahengZhang Xuan
3. Merge the sorted arrays.
1. Sort the first half
Bai YiweiCai WanxinLi HuichenLi YunqiLiu HaomingLiu ZhijianLu YizhouQiu ZhiTang Shuyang WanChengXie TianchengXu XiaojunYe ZihaoYu HongzhongZhao XueyuanZhou YuhaoZhu Qiuming
2. Sort the second half
Chen LequnChen TianyaoGao BichengHuang JunxiangHuang YuxiangKe SongyuPu YifeiQiu WeiSun XingyuanXu BowenXu ShichaoXue ZhendongYang RunzheYou XiaotianYou YurongZhang JiahengZhang Xuan
3. Merge the sorted arrays.
1. Sort the first half
Bai YiweiCai WanxinLi HuichenLi YunqiLiu HaomingLiu ZhijianLu YizhouQiu ZhiTang Shuyang WanChengXie TianchengXu XiaojunYe ZihaoYu HongzhongZhao XueyuanZhou YuhaoZhu Qiuming
2. Sort the second half
Chen LequnChen TianyaoGao BichengHuang JunxiangHuang YuxiangKe SongyuPu YifeiQiu WeiSun XingyuanXu BowenXu ShichaoXue ZhendongYang RunzheYou XiaotianYou YurongZhang JiahengZhang Xuan
3. Merge the sorted arrays.
1. Sort the first half
Bai YiweiCai WanxinLi HuichenLi YunqiLiu HaomingLiu ZhijianLu YizhouQiu ZhiTang Shuyang WanChengXie TianchengXu XiaojunYe ZihaoYu HongzhongZhao XueyuanZhou YuhaoZhu Qiuming
2. Sort the second half
Chen LequnChen TianyaoGao BichengHuang JunxiangHuang YuxiangKe SongyuPu YifeiQiu WeiSun XingyuanXu BowenXu ShichaoXue ZhendongYang RunzheYou XiaotianYou YurongZhang JiahengZhang Xuan
3. Merge the sorted arrays.
Bai Yiwei
1. Sort the first half
Bai YiweiCai WanxinLi HuichenLi YunqiLiu HaomingLiu ZhijianLu YizhouQiu ZhiTang Shuyang WanChengXie TianchengXu XiaojunYe ZihaoYu HongzhongZhao XueyuanZhou YuhaoZhu Qiuming
2. Sort the second half
Chen LequnChen TianyaoGao BichengHuang JunxiangHuang YuxiangKe SongyuPu YifeiQiu WeiSun XingyuanXu BowenXu ShichaoXue ZhendongYang RunzheYou XiaotianYou YurongZhang JiahengZhang Xuan
3. Merge the sorted arrays.
Bai Yiwei
1. Sort the first half
Bai YiweiCai WanxinLi HuichenLi YunqiLiu HaomingLiu ZhijianLu YizhouQiu ZhiTang Shuyang WanChengXie TianchengXu XiaojunYe ZihaoYu HongzhongZhao XueyuanZhou YuhaoZhu Qiuming
2. Sort the second half
Chen LequnChen TianyaoGao BichengHuang JunxiangHuang YuxiangKe SongyuPu YifeiQiu WeiSun XingyuanXu BowenXu ShichaoXue ZhendongYang RunzheYou XiaotianYou YurongZhang JiahengZhang Xuan
3. Merge the sorted arrays.
Bai Yiwei
1. Sort the first half
Bai YiweiCai WanxinLi HuichenLi YunqiLiu HaomingLiu ZhijianLu YizhouQiu ZhiTang Shuyang WanChengXie TianchengXu XiaojunYe ZihaoYu HongzhongZhao XueyuanZhou YuhaoZhu Qiuming
2. Sort the second half
Chen LequnChen TianyaoGao BichengHuang JunxiangHuang YuxiangKe SongyuPu YifeiQiu WeiSun XingyuanXu BowenXu ShichaoXue ZhendongYang RunzheYou XiaotianYou YurongZhang JiahengZhang Xuan
3. Merge the sorted arrays.
Bai YiweiCai Wanxin
1. Sort the first half
Bai YiweiCai WanxinLi HuichenLi YunqiLiu HaomingLiu ZhijianLu YizhouQiu ZhiTang Shuyang WanChengXie TianchengXu XiaojunYe ZihaoYu HongzhongZhao XueyuanZhou YuhaoZhu Qiuming
2. Sort the second half
Chen LequnChen TianyaoGao BichengHuang JunxiangHuang YuxiangKe SongyuPu YifeiQiu WeiSun XingyuanXu BowenXu ShichaoXue ZhendongYang RunzheYou XiaotianYou YurongZhang JiahengZhang Xuan
3. Merge the sorted arrays.
Bai YiweiCai Wanxin
1. Sort the first half
Bai YiweiCai WanxinLi HuichenLi YunqiLiu HaomingLiu ZhijianLu YizhouQiu ZhiTang Shuyang WanChengXie TianchengXu XiaojunYe ZihaoYu HongzhongZhao XueyuanZhou YuhaoZhu Qiuming
2. Sort the second half
Chen LequnChen TianyaoGao BichengHuang JunxiangHuang YuxiangKe SongyuPu YifeiQiu WeiSun XingyuanXu BowenXu ShichaoXue ZhendongYang RunzheYou XiaotianYou YurongZhang JiahengZhang Xuan
3. Merge the sorted arrays.
Bai YiweiCai Wanxin
1. Sort the first half
Bai YiweiCai WanxinLi HuichenLi YunqiLiu HaomingLiu ZhijianLu YizhouQiu ZhiTang Shuyang WanChengXie TianchengXu XiaojunYe ZihaoYu HongzhongZhao XueyuanZhou YuhaoZhu Qiuming
2. Sort the second half
Chen LequnChen TianyaoGao BichengHuang JunxiangHuang YuxiangKe SongyuPu YifeiQiu WeiSun XingyuanXu BowenXu ShichaoXue ZhendongYang RunzheYou XiaotianYou YurongZhang JiahengZhang Xuan
3. Merge the sorted arrays.
Bai YiweiCai WanxinChen Lequn
1. Sort the first half
Bai YiweiCai WanxinLi HuichenLi YunqiLiu HaomingLiu ZhijianLu YizhouQiu ZhiTang Shuyang WanChengXie TianchengXu XiaojunYe ZihaoYu HongzhongZhao XueyuanZhou YuhaoZhu Qiuming
2. Sort the second half
Chen LequnChen TianyaoGao BichengHuang JunxiangHuang YuxiangKe SongyuPu YifeiQiu WeiSun XingyuanXu BowenXu ShichaoXue ZhendongYang RunzheYou XiaotianYou YurongZhang JiahengZhang Xuan
3. Merge the sorted arrays.
Bai YiweiCai WanxinChen Lequn
1. Sort the first half
Bai YiweiCai WanxinLi HuichenLi YunqiLiu HaomingLiu ZhijianLu YizhouQiu ZhiTang Shuyang WanChengXie TianchengXu XiaojunYe ZihaoYu HongzhongZhao XueyuanZhou YuhaoZhu Qiuming
2. Sort the second half
Chen LequnChen TianyaoGao BichengHuang JunxiangHuang YuxiangKe SongyuPu YifeiQiu WeiSun XingyuanXu BowenXu ShichaoXue ZhendongYang RunzheYou XiaotianYou YurongZhang JiahengZhang Xuan
3. Merge the sorted arrays.
Bai YiweiCai WanxinChen Lequn
1. Sort the first half
Bai YiweiCai WanxinLi HuichenLi YunqiLiu HaomingLiu ZhijianLu YizhouQiu ZhiTang Shuyang WanChengXie TianchengXu XiaojunYe ZihaoYu HongzhongZhao XueyuanZhou YuhaoZhu Qiuming
2. Sort the second half
Chen LequnChen TianyaoGao BichengHuang JunxiangHuang YuxiangKe SongyuPu YifeiQiu WeiSun XingyuanXu BowenXu ShichaoXue ZhendongYang RunzheYou XiaotianYou YurongZhang JiahengZhang Xuan
3. Merge the sorted arrays.
Bai YiweiCai WanxinChen Lequn
1. Sort the first half
Bai YiweiCai WanxinLi HuichenLi YunqiLiu HaomingLiu ZhijianLu YizhouQiu ZhiTang Shuyang WanChengXie TianchengXu XiaojunYe ZihaoYu HongzhongZhao XueyuanZhou YuhaoZhu Qiuming
2. Sort the second half
Chen LequnChen TianyaoGao BichengHuang JunxiangHuang YuxiangKe SongyuPu YifeiQiu WeiSun XingyuanXu BowenXu ShichaoXue ZhendongYang RunzheYou XiaotianYou YurongZhang JiahengZhang Xuan
3. Merge the sorted arrays.
Bai YiweiCai WanxinChen Lequn
How do we sort the two halves?
Merge sort
Merge sortY, L, X, B, C, Q, Z, T
Merge sortY, L, X, B, C, Q, Z, T
Merge sortY, L, X, B, C, Q, Z, T
Y, L, X, B C, Q, Z, T
Merge sortY, L, X, B, C, Q, Z, T
Y, L, X, B C, Q, Z, T
Merge sortY, L, X, B, C, Q, Z, T
Y, L, X, B C, Q, Z, T
Y, L X, B
Merge sortY, L, X, B, C, Q, Z, T
Y, L, X, B C, Q, Z, T
Y, L X, B
Y L
Merge sortY, L, X, B, C, Q, Z, T
Y, L, X, B C, Q, Z, T
Y, L X, B
Y L
L,Y
Merge sortY, 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 sortY, 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 sortY, 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 sortY, 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 sortY, 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 sortY, 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 sortY, 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 sortY, 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 sortY, 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 sortY, 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 sortY, 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):
• n := |X|• if n = 1: return X• else:
– A := mergesort (X [1 . . . bn/2c])– B := mergesort (X [bn/2c+ 1 . . . n])– return merge(A,B)
Pseudocode for Mergesort
mergesort(array X):
• n := |X|• if n = 1: return X• else:
– A := mergesort (X [1 . . . bn/2c])– B := mergesort (X [bn/2c+ 1 . . . n])– return merge(A,B)
Pseudocode for merge
Pseudocode for merge
merge(A,B):• if |A| = 0 return B• else if |B| = 0 return A• else if A[1] < B[1]: return A[1] ◦merge(A[2 . . .], B)• else return B[1] ◦merge(A,B[2 . . .])
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| − 1comparisons.
How long does it take?
How many comparisons does it take?
merge(A,B) requires at most |A|+ |B| − 1comparisons.
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 . . .
......
......
......
.... . .
. . . n2× 1
If n = 2d . . .
......
......
......
.... . .
. . . n2× 1
. . .
If n = 2d . . .
......
......
......
.... . .
. . . n2× 1
. . . n4× 3
If n = 2d . . .
......
......
......
.... . .
. . . n2× 1
. . . n4× 3
n8× 7
If n = 2d . . .
......
......
......
.... . .
. . . n2× 1
. . . n4× 3
n8× 7
Blackboard
Mergesort requires at most ndlog(n)e 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)2
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)2
mergesort: ndlog(n)e
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)2
mergesort: ndlog(n)e
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)2
mergesort: ndlog(n)e
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)2
mergesort: ndlog(n)e
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)2
mergesort: ndlog(n)e
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)2
mergesort: ndlog(n)e
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)2
mergesort: ndlog(n)e
Steps Runtime
204
660,752
600 mio
1 second
15 minutes
fast computerbad 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)2
mergesort: ndlog(n)e
Steps Runtime
204
660,752
600 mio
1 second
15 minutes
fast computerbad algorithm
slow computergood algorithm
What will study this semester?
What will study this semester?
1. Which areas do will we study?
What will study this semester?
Sorting algorithms
1. Which areas do will we study?
What will study this semester?
Sorting algorithms
Algorithms for numbers, matrices;
1. Which areas do will we study?
What will study this semester?
Sorting algorithms
Algorithms for numbers, matrices; “algebraic algorithms”
1. Which areas do will we study?
What will study this semester?
Sorting algorithms
Algorithms for numbers, matrices; “algebraic algorithms”
Graph algorithms
1. Which areas do will we study?
What will study this semester?
Sorting algorithms
Algorithms for numbers, matrices; “algebraic algorithms”
Graph algorithms
1. Which areas do will we study?
Optimization algorithms
What will study this semester?
What will study this semester?
2. Which algorithmic ideas will we study?
What will study this semester?
2. Which algorithmic ideas will we study?
Divide-and-conquer algorithms (like mergesort)
What will study this semester?
2. Which algorithmic ideas will we study?
Divide-and-conquer algorithms (like mergesort)
Greedy algorithms (always do the next best thing)
What will study this semester?
2. Which algorithmic ideas will we study?
Divide-and-conquer algorithms (like mergesort)
Greedy algorithms (always do the next best thing)
Dynamic programming (recursion unrolled)
What will study this semester?
2. Which algorithmic ideas will we study?
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?
3. Which aspects will we study?
What will study this semester?
3. Which aspects will we study?
Is our algorithm correct?
What will study this semester?
3. Which aspects will we study?
Is our algorithm correct?
How fast is it?
What will study this semester?
3. Which aspects will we study?
Is our algorithm correct?
How fast is it?
How much memory does it use?
What will study this semester?
3. Which aspects will we study?
Is our algorithm correct?
How fast is it?
How much memory does it use?
Efficiency
What will study this semester?
3. Which aspects will we study?
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 Iunderstand the proof of (1) correctness; (2) runningtime?
Why should we study algorithms?
Most algorithms are already implemented in a library.
If I can implement an algorithm, why must Iunderstand the proof of (1) correctness; (2) runningtime?
You will always face new problems for whichyour library has no implemented solution!