Algorithm Design and Analysis -...

Post on 30-Apr-2020

4 views 0 download

Transcript of Algorithm Design and Analysis -...

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!