• No results found

Mergesort

N/A
N/A
Protected

Academic year: 2020

Share "Mergesort"

Copied!
146
0
0

Loading.... (view fulltext now)

Full text

(1)
(2)

Merge Sort Advantages

Asymptotically Optimal

Stable

Good for external sorting

(3)

Merge Sort Disadvantages

Harder to program

Not in-place

(4)

Merge Sort Code

(5)

Merge Sort Example

(6)

2 8 5 1 3 4 6

2 8 5 1 3 4 6

2 8 5 1

2 8 5 1 3 4

6 3 4

(7)

2 8 5 1 3 4 6

2 8 5 1 3 4 6

2 8 5 1

2 8 5 1 3 4

6 3 4

(8)

2 8 5 1 3 4 6

2 8 5 1 3 4 6

2 8 5 1

2 8 5 1 3 4

6 3 4

(9)

position 1 = 0 value = 2

position 2 = 1 value = 8

0 0

Temporary Array Original Array

position 3 = 0 value = 0

2 8 5 1 3 4 6

min position = 0

(10)

position 1 = 0 value = 2

set value at position 3 to min(2, 8)increment position 1

increment position 3

position 2 = 1 value = 8

0 0

Temporary Array Original Array

position 3 = 0 value = 0

2 8 5 1 3 4 6

min position = 0

(11)

position 1 = 0 value = 2

set value at position 3 to min(2, 8)

increment position 1

increment position 3 min position = 0

middle position = 0 max position = 1

position 2 = 1 value = 8

2 0

Temporary Array Original Array

position 3 = 0 value = 2

(12)

position 1 = 1 value = 8

set value at position 3 to min(2, 8)

increment position 1

increment position 3

position 2 = 1 value = 8

2 0

Temporary Array Original Array

2 8 5 1 3 4 6

min position = 0

middle position = 0 max position = 1 position 3 = 0

(13)

position 1 = 1 value = 2

set value at position 3 to min(2, 8)increment position 1

increment position 3

position 2 = 1 value = 8

2 0

Temporary Array Original Array

2 8 5 1 3 4 6

min position = 0

middle position = 0 max position = 1 position 3 = 1

(14)

position 1 = 1 value = 2

position 2 = 1 value = 8

2 0

Temporary Array Original Array

2 8 5 1 3 4 6

min position = 0

middle position = 0 max position = 1 position 3 = 1

(15)

position 1 = 1 value = 2

position 1 > middle position

copy from original to temporary

from position 2 to max position

increment position 3 to the (end + 1)

position 2 = 1 value = 8

2 0

Temporary Array Original Array

2 8 5 1 3 4 6

min position = 0

middle position = 0 max position = 1 position 3 = 1

(16)

position 1 = 1 value = 2

position 1 > middle position

copy from original to temporary

from position 2 to max position

increment position 3 to the (end + 1)

position 2 = 1 value = 8

2 0

Temporary Array Original Array

2 8 5 1 3 4 6

min position = 0

middle position = 0 max position = 1 position 3 = 1

(17)

position 1 = 1 value = 2

position 1 > middle position

copy from original to temporary

from position 2 to max position

increment position 3 to the (end + 1)

position 2 = 1 value = 8

2 8

Temporary Array Original Array

2 8 5 1 3 4 6

min position = 0

middle position = 0 max position = 1 position 3 = 1

(18)

position 1 = 1 value = 2

position 1 > middle position

copy from original to temporary

from position 2 to max position

increment position 3 to the (end + 1)

position 2 = 1 value = 8

2 8

Temporary Array Original Array

2 8 5 1 3 4 6

min position = 0

middle position = 0 max position = 1 position 3 = 2

(19)

position 1 = 1 value = 2

position 2 = 1 value = 8

2 8

Temporary Array Original Array

2 8 5 1 3 4 6

min position = 0

middle position = 0 max position = 1 position 3 = 2

(20)

position 1 = 1 value = 2

position 3 = length of temporary arraycopy everything from the temporary

array to the original array from min position to max position

position 2 = 1 value = 8

2 8

Temporary Array Original Array

2 8 5 1 3 4 6

min position = 0

middle position = 0 max position = 1 position 3 = 2

(21)

position 1 = 1 value = 2

position 3 = length of temporary array

copy everything from the temporary

array to the original array from min position to max position

position 2 = 1 value = 8

2 8

Temporary Array Original Array

2 8 5 1 3 4 6

min position = 0

middle position = 0 max position = 1 position 3 = 2

(22)

position 1 = 1 value = 2

position 3 = length of temporary array

copy everything from the temporary

array to the original array from min position to max position

position 2 = 1 value = 8

2 8

Temporary Array Original Array

2 8 5 1 3 4 6

min position = 0

middle position = 0 max position = 1 position 3 = 2

(23)

2 8 5 1 3 4 6

2 8 5 1 3 4 6

2 8 5 1

2 8 5 1 3 4

6 3 4

(24)

2 8 5 1 3 4 6

2 8 5 1 3 4 6

2 8 5 1

2 8 5 1 3 4

6 3 4

(25)

position 1 = 2 value = 5

position 2 = 3 value = 1

0 0

Temporary Array Original Array

position 3 = 0 value = 0

2 8 5 1 3 4 6

min position = 2

(26)

position 1 = 2 value = 5

position 2 = 3 value = 1

0 0

Temporary Array Original Array

position 3 = 0 value = 0

2 8 5 1 3 4 6

min position = 2

middle position = 2 max position = 3

set value at position 3 to min(5, 1)increment position 2

(27)

position 1 = 2 value = 5

position 2 = 3 value = 1

1 0

Temporary Array Original Array

position 3 = 0 value = 1

2 8 5 1 3 4 6

min position = 2

middle position = 2 max position = 3

set value at position 3 to min(5, 1)

(28)

position 1 = 2 value = 5

position 2 = 4 value = 3

1 0

Temporary Array Original Array

position 3 = 0 value = 1

2 8 5 1 3 4 6

min position = 2

middle position = 2 max position = 3

set value at position 3 to min(5, 1)

increment position 2

(29)

position 1 = 2 value = 5

position 2 = 4 value = 3

1 0

Temporary Array Original Array

position 3 = 1 value = 0

2 8 5 1 3 4 6

min position = 2

middle position = 2 max position = 3

set value at position 3 to min(5, 1)increment position 2

(30)

position 1 = 2 value = 5

position 2 = 4 value = 3

1 0

Temporary Array Original Array

position 3 = 1 value = 0

2 8 5 1 3 4 6

min position = 2

(31)

position 1 = 2 value = 5

position 2 = 4 value = 3

1 0

Temporary Array Original Array

position 3 = 1 value = 0

2 8 5 1 3 4 6

min position = 2

middle position = 2 max position = 3

position 2 > max position

copy from original to temporary

from position 1 to middle position

(32)

position 1 = 2 value = 5

position 2 = 4 value = 3

1 0

Temporary Array Original Array

position 3 = 1 value = 0

2 8 5 1 3 4 6

min position = 2

middle position = 2 max position = 3

position 2 > max position

copy from original to temporary

from position 1 to middle position

(33)

position 1 = 2 value = 5

position 2 = 4 value = 3

1 5

Temporary Array Original Array

position 3 = 1 value = 5

2 8 5 1 3 4 6

min position = 2

middle position = 2 max position = 3

position 2 > max position

copy from original to temporary

from position 1 to middle position

(34)

position 1 = 2 value = 5

position 2 = 4 value = 3

1 5

Temporary Array Original Array

position 3 = 2 value = N/A

2 8 5 1 3 4 6

min position = 2

middle position = 2 max position = 3

position 2 > max position

copy from original to temporary

from position 1 to middle position

(35)

position 1 = 2 value = 5

position 2 = 4 value = 3

1 5

Temporary Array Original Array

position 3 = 2 value = N/A

2 8 5 1 3 4 6

min position = 2

(36)

position 1 = 2 value = 5

position 2 = 4 value = 3

1 5

Temporary Array Original Array

position 3 = 2 value = N/A

2 8 5 1 3 4 6

min position = 2

middle position = 2 max position = 3

position 3 = length of temporary arraycopy everything from the temporary

(37)

position 1 = 2 value = 5

position 2 = 4 value = 3

1 5

Temporary Array Original Array

position 3 = 2 value = N/A

2 8 5 1 3 4 6

min position = 2

middle position = 2 max position = 3

position 3 = length of temporary array

copy everything from the temporary

(38)

position 1 = 2 value = 5

position 2 = 4 value = 3

1 5

Temporary Array Original Array

position 3 = 2 value = N/A

2 8 1 5 3 4 6

min position = 2

middle position = 2 max position = 3

position 3 = length of temporary arraycopy everything from the temporary

(39)

2 8 5 1 3 4 6

2 8 5 1 3 4 6

2 8 1 5

2 8 5 1 3 4

6 3 4

(40)

2 8 5 1 3 4 6

2 8 5 1 3 4 6

2 8 1 5

2 8 5 1 3 4

6 3 4

(41)

position 1 = 0 value = 2

position 2 = 2 value = 1

Temporary Array Original Array

position 3 = 0 value = 0

2 8 1 5 3 4 6

min position = 0

middle position = 1 max position = 3

(42)

position 1 = 0 value = 2

position 2 = 2 value = 1

Temporary Array Original Array

position 3 = 0 value = 0

2 8 1 5 3 4 6

min position = 0

middle position = 1 max position = 3

0 0 0 0

set value at position 3 to min(2, 1)increment position 2

(43)

position 1 = 0 value = 2

position 2 = 2 value = 1

Temporary Array Original Array

position 3 = 0 value = 1

2 8 1 5 3 4 6

min position = 0

middle position = 1 max position = 3

1 0 0 0

set value at position 3 to min(2, 1)

(44)

position 1 = 0 value = 2

position 2 = 3 value = 5

Temporary Array Original Array

position 3 = 0 value = 1

2 8 1 5 3 4 6

min position = 0

middle position = 1 max position = 3

1 0 0 0

set value at position 3 to min(2, 1)

increment position 2

(45)

position 1 = 0 value = 2

position 2 = 3 value = 5

Temporary Array Original Array

position 3 = 1 value = 0

2 8 1 5 3 4 6

min position = 0

middle position = 1 max position = 3

1 0 0 0

set value at position 3 to min(2, 1)increment position 2

(46)

position 1 = 0 value = 2

position 2 = 3 value = 5

Temporary Array Original Array

position 3 = 1 value = 0

2 8 1 5 3 4 6

min position = 0

middle position = 1 max position = 3

(47)

position 1 = 0 value = 2

position 2 = 3 value = 5

Temporary Array Original Array

position 3 = 1 value = 0

2 8 1 5 3 4 6

min position = 0

middle position = 1 max position = 3

1 0 0 0

set value at position 3 to min(2, 5)increment position 1

(48)

position 1 = 0 value = 2

position 2 = 3 value = 5

Temporary Array Original Array

position 3 = 1 value = 2

2 8 1 5 3 4 6

min position = 0

middle position = 1 max position = 3

1 2 0 0

set value at position 3 to min(2, 5)

(49)

position 1 = 1 value = 8

position 2 = 3 value = 5

Temporary Array Original Array

position 3 = 1 value = 2

2 8 1 5 3 4 6

min position = 0

middle position = 1 max position = 3

1 2 0 0

set value at position 3 to min(2, 5)

increment position 1

(50)

position 1 = 1 value = 8

position 2 = 3 value = 5

Temporary Array Original Array

position 3 = 2 value = 0

2 8 1 5 3 4 6

min position = 0

middle position = 1 max position = 3

1 2 0 0

set value at position 3 to min(2, 5)increment position 1

(51)

position 1 = 1 value = 8

position 2 = 3 value = 5

Temporary Array Original Array

position 3 = 2 value = 0

2 8 1 5 3 4 6

min position = 0

middle position = 1 max position = 3

(52)

position 1 = 1 value = 8

position 2 = 3 value = 5

Temporary Array Original Array

position 3 = 2 value = 0

2 8 1 5 3 4 6

min position = 0

middle position = 1 max position = 3

1 2 0 0

set value at position 3 to min(8, 5)increment position 2

(53)

position 1 = 1 value = 8

position 2 = 3 value = 5

Temporary Array Original Array

position 3 = 2 value = 5

2 8 1 5 3 4 6

min position = 0

middle position = 1 max position = 3

1 2 5 0

set value at position 3 to min(8, 5)

(54)

position 1 = 1 value = 8

position 2 = 4 value = 3

Temporary Array Original Array

position 3 = 2 value = 5

2 8 1 5 3 4 6

min position = 0

middle position = 1 max position = 3

1 2 5 0

set value at position 3 to min(8, 5)

increment position 2

(55)

position 1 = 1 value = 8

position 2 = 4 value = 3

Temporary Array Original Array

position 3 = 3 value = 0

2 8 1 5 3 4 6

min position = 0

middle position = 1 max position = 3

1 2 5 0

set value at position 3 to min(8, 5)increment position 2

(56)

position 1 = 1 value = 8

position 2 = 4 value = 3

Temporary Array Original Array

position 3 = 3 value = 0

2 8 1 5 3 4 6

min position = 0

middle position = 1 max position = 3

(57)

position 1 = 1 value = 8

position 2 = 4 value = 3

Temporary Array Original Array

position 3 = 3 value = 0

2 8 1 5 3 4 6

min position = 0

middle position = 1 max position = 3

1 2 5 0

position 2 > max position

copy from original to temporary

from position 1 to middle position

(58)

position 1 = 1 value = 8

position 2 = 4 value = 3

Temporary Array Original Array

position 3 = 3 value = 0

2 8 1 5 3 4 6

min position = 0

middle position = 1 max position = 3

1 2 5 0

position 2 > max position

copy from original to temporary

from position 1 to middle position

(59)

position 1 = 1 value = 8

position 2 = 4 value = 3

Temporary Array Original Array

position 3 = 3 value = 8

2 8 1 5 3 4 6

min position = 0

middle position = 1 max position = 3

1 2 5 8

position 2 > max position

copy from original to temporary

from position 1 to middle position

(60)

position 1 = 1 value = 8

position 2 = 4 value = 3

Temporary Array Original Array

position 3 = 4 value = N/A

2 8 1 5 3 4 6

min position = 0

middle position = 1 max position = 3

1 2 5 8

position 2 > max position

copy from original to temporary

from position 1 to middle position

(61)

position 1 = 1 value = 8

position 2 = 4 value = 3

Temporary Array Original Array

position 3 = 4 value = N/A

2 8 1 5 3 4 6

min position = 0

middle position = 1 max position = 3

(62)

position 1 = 1 value = 8

position 2 = 4 value = 3

Temporary Array Original Array

position 3 = 4 value = N/A

2 8 1 5 3 4 6

min position = 0

middle position = 1 max position = 3

1 2 5 8

position 3 = length of temporary arraycopy everything from the temporary

(63)

position 1 = 1 value = 8

position 2 = 4 value = 3

Temporary Array Original Array

position 3 = 4 value = N/A

2 8 1 5 3 4 6

min position = 0

middle position = 1 max position = 3

1 2 5 8

position 3 = length of temporary array

copy everything from the temporary

(64)

position 1 = 1 value = 8

position 2 = 4 value = 3

Temporary Array Original Array

position 3 = 4 value = N/A

1 2 5 8 3 4 6

min position = 0

middle position = 1 max position = 3

1 2 5 8

position 3 = length of temporary array

copy everything from the temporary

(65)

2 8 5 1 3 4 6

1 2 5 8 3 4 6

2 8 1 5

2 8 5 1 3 4

6 3 4

(66)

2 8 5 1 3 4 6

1 2 5 8 3 4 6

2 8 1 5

2 8 5 1 3 4

6 3 4

(67)

position 1 = 4 value = 3

position 2 = 5 value = 4

0 0

Temporary Array Original Array

position 3 = 0 value = 0

1 2 5 8 3 4 6

min position = 4

(68)

position 1 = 4 value = 3

position 2 = 5 value = 4

0 0

Temporary Array Original Array

position 3 = 0 value = 0

1 2 5 8 3 4 6

min position = 4

middle position = 4 max position = 5

set value at position 3 to min(3, 4)increment position 1

(69)

position 1 = 4 value = 3

position 2 = 5 value = 4

3 0

Temporary Array Original Array

position 3 = 0 value = 3

1 2 5 8 3 4 6

min position = 4

middle position = 4 max position = 5

set value at position 3 to min(3, 4)

(70)

position 1 = 5 value = 4

position 2 = 5 value = 4

3 0

Temporary Array Original Array

position 3 = 0 value = 3

1 2 5 8 3 4 6

min position = 4

middle position = 4 max position = 5

set value at position 3 to min(3, 4)

increment position 1

(71)

position 1 = 5 value = 4

position 2 = 5 value = 4

3 0

Temporary Array Original Array

position 3 = 1 value = 0

1 2 5 8 3 4 6

min position = 4

middle position = 4 max position = 5

set value at position 3 to min(3, 4)increment position 1

(72)

position 1 = 5 value = 4

position 2 = 5 value = 4

3 0

Temporary Array Original Array

position 3 = 1 value = 0

1 2 5 8 3 4 6

min position = 4

(73)

position 1 = 5 value = 4

position 2 = 5 value = 4

3 0

Temporary Array Original Array

position 3 = 1 value = 0

1 2 5 8 3 4 6

min position = 4

middle position = 4 max position = 5

position 1 > middle position

copy from original to temporary

from position 2 to max position

(74)

position 1 = 5 value = 4

position 2 = 5 value = 4

3 0

Temporary Array Original Array

position 3 = 1 value = 0

1 2 5 8 3 4 6

min position = 4

middle position = 4 max position = 5

position 1 > middle position

copy from original to temporary

from position 2 to max position

(75)

position 1 = 5 value = 4

position 2 = 5 value = 4

3 4

Temporary Array Original Array

position 3 = 1 value = 4

1 2 5 8 3 4 6

min position = 4

middle position = 4 max position = 5

position 1 > middle position

copy from original to temporary

from position 2 to max position

(76)

position 1 = 5 value = 4

position 2 = 5 value = 4

3 4

Temporary Array Original Array

position 3 = 2 value = N/A

1 2 5 8 3 4 6

min position = 4

middle position = 4 max position = 5

position 1 > middle position

copy from original to temporary

from position 2 to max position

(77)

position 1 = 5 value = 4

position 2 = 5 value = 4

3 4

Temporary Array Original Array

position 3 = 2 value = N/A

1 2 5 8 3 4 6

min position = 4

(78)

position 1 = 5 value = 4

position 2 = 5 value = 4

3 4

Temporary Array Original Array

position 3 = 2 value = N/A

1 2 5 8 3 4 6

min position = 4

middle position = 4 max position = 5

position 3 = length of temporary arraycopy everything from the temporary

(79)

position 1 = 5 value = 4

position 2 = 5 value = 4

3 4

Temporary Array Original Array

position 3 = 2 value = N/A

1 2 5 8 3 4 6

min position = 4

middle position = 4 max position = 5

position 3 = length of temporary array

copy everything from the temporary

(80)

position 1 = 5 value = 4

position 2 = 5 value = 4

3 4

Temporary Array Original Array

position 3 = 2 value = N/A

1 2 5 8 3 4 6

min position = 4

middle position = 4 max position = 5

position 3 = length of temporary arraycopy everything from the temporary

(81)

2 8 5 1 3 4 6

1 2 5 8 3 4 6

2 8 1 5

2 8 5 1 3 4

6 3 4

(82)

2 8 5 1 3 4 6

1 2 5 8 3 4 6

2 8 1 5

2 8 5 1 3 4

6 3 4

(83)

position 1 = 4 value = 3

position 2 = 5 value = 6

Temporary Array Original Array

position 3 = 0 value = 0

1 2 5 8 3 4 6

min position = 4

middle position = 5 max position = 6

(84)

position 1 = 4 value = 3

position 2 = 5 value = 6

Temporary Array Original Array

position 3 = 0 value = 0

1 2 5 8 3 4 6

min position = 4

middle position = 5 max position = 6

0 0 0

set value at position 3 to min(3, 6)increment position 1

(85)

position 1 = 4 value = 3

position 2 = 5 value = 6

Temporary Array Original Array

position 3 = 0 value = 3

1 2 5 8 3 4 6

min position = 4

middle position = 5 max position = 6

3 0 0

set value at position 3 to min(3, 6)

(86)

position 1 = 5 value = 4

position 2 = 5 value = 6

Temporary Array Original Array

position 3 = 0 value = 3

1 2 5 8 3 4 6

min position = 4

middle position = 5 max position = 6

3 0 0

set value at position 3 to min(3, 6)

increment position 1

(87)

position 1 = 5 value = 4

position 2 = 5 value = 6

Temporary Array Original Array

position 3 = 1 value = 0

1 2 5 8 3 4 6

min position = 4

middle position = 5 max position = 6

3 0 0

set value at position 3 to min(3, 6)increment position 1

(88)

position 1 = 5 value = 4

position 2 = 5 value = 6

Temporary Array Original Array

position 3 = 1 value = 0

1 2 5 8 3 4 6

min position = 4

middle position = 5 max position = 6

(89)

position 1 = 5 value = 4

position 2 = 5 value = 6

Temporary Array Original Array

position 3 = 1 value = 0

1 2 5 8 3 4 6

min position = 4

middle position = 5 max position = 6

3 0 0

set value at position 3 to min(4, 6)increment position 1

(90)

position 1 = 5 value = 4

position 2 = 5 value = 6

Temporary Array Original Array

position 3 = 1 value = 4

1 2 5 8 3 4 6

min position = 4

middle position = 5 max position = 6

3 4 0

set value at position 3 to min(4, 6)

(91)

position 1 = 6 value = 6

position 2 = 5 value = 6

Temporary Array Original Array

position 3 = 1 value = 4

1 2 5 8 3 4 6

min position = 4

middle position = 5 max position = 6

3 4 0

set value at position 3 to min(4, 6)

increment position 1

(92)

position 1 = 6 value = 6

position 2 = 5 value = 6

Temporary Array Original Array

position 3 = 2 value = 0

1 2 5 8 3 4 6

min position = 4

middle position = 5 max position = 6

3 4 0

set value at position 3 to min(4, 6)increment position 1

(93)

position 1 = 6 value = 6

position 2 = 5 value = 6

Temporary Array Original Array

position 3 = 2 value = 0

1 2 5 8 3 4 6

min position = 4

middle position = 5 max position = 6

(94)

position 1 = 6 value = 6

position 2 = 5 value = 6

Temporary Array Original Array

position 3 = 2 value = 0

1 2 5 8 3 4 6

min position = 4

middle position = 5 max position = 6

3 4 0

position 1 > middle position

copy from original to temporary

from position 2 to max position

(95)

position 1 = 6 value = 6

position 2 = 5 value = 6

Temporary Array Original Array

position 3 = 2 value = 0

1 2 5 8 3 4 6

min position = 4

middle position = 5 max position = 6

3 4 0

position 1 > middle position

copy from original to temporary

from position 2 to max position

(96)

position 1 = 6 value = 6

position 2 = 5 value = 6

Temporary Array Original Array

position 3 = 2 value = 6

1 2 5 8 3 4 6

min position = 4

middle position = 5 max position = 6

3 4 6

position 1 > middle position

copy from original to temporary

from position 2 to max position

(97)

position 1 = 6 value = 6

position 2 = 5 value = 6

Temporary Array Original Array

position 3 = 3 value = N/A

1 2 5 8 3 4 6

min position = 4

middle position = 5 max position = 6

3 4 6

position 1 > middle position

copy from original to temporary

from position 2 to max position

(98)

position 1 = 6 value = 6

position 2 = 5 value = 6

Temporary Array Original Array

position 3 = 3 value = N/A

1 2 5 8 3 4 6

min position = 4

middle position = 5 max position = 6

(99)

position 1 = 6 value = 6

position 2 = 5 value = 6

Temporary Array Original Array

position 3 = 3 value = N/A

1 2 5 8 3 4 6

min position = 4

middle position = 5 max position = 6

3 4 6

position 3 = length of temporary arraycopy everything from the temporary

(100)

position 1 = 6 value = 6

position 2 = 5 value = 6

Temporary Array Original Array

position 3 = 3 value = N/A

1 2 5 8 3 4 6

min position = 4

middle position = 5 max position = 6

3 4 6

position 3 = length of temporary array

copy everything from the temporary

(101)

position 1 = 6 value = 6

position 2 = 5 value = 6

Temporary Array Original Array

position 3 = 3 value = N/A

1 2 5 8 3 4 6

min position = 4

middle position = 5 max position = 6

3 4 6

position 3 = length of temporary array

copy everything from the temporary

(102)

2 8 5 1 3 4 6

1 2 5 8 3 4 6

2 8 1 5

2 8 5 1 3 4

6 3 4

(103)

2 8 5 1 3 4 6

1 2 5 8 3 4 6

2 8 1 5

2 8 5 1 3 4

6 3 4

(104)

position 1 = 0 value = 1

position 2 = 4 value = 3

Temporary Array Original Array

position 3 = 0 value = 0

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

(105)

position 1 = 0 value = 1

position 2 = 4 value = 3

Temporary Array Original Array

position 3 = 0 value = 0

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

0 0 0 0 0 0 0

set value at position 3 to min(1, 3)increment position 1

(106)

position 1 = 0 value = 1

position 2 = 4 value = 3

Temporary Array Original Array

position 3 = 0 value = 1

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 0 0 0 0 0 0

set value at position 3 to min(1, 3)

(107)

position 1 = 1 value = 2

position 2 = 4 value = 3

Temporary Array Original Array

position 3 = 0 value = 1

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 0 0 0 0 0 0

set value at position 3 to min(1, 3)

increment position 1

(108)

position 1 = 1 value = 2

position 2 = 4 value = 3

Temporary Array Original Array

position 3 = 1 value = 0

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 0 0 0 0 0 0

set value at position 3 to min(1, 3)increment position 1

(109)

position 1 = 1 value = 2

position 2 = 4 value = 3

Temporary Array Original Array

position 3 = 1 value = 0

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

(110)

position 1 = 1 value = 2

position 2 = 4 value = 3

Temporary Array Original Array

position 3 = 1 value = 0

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 0 0 0 0 0 0

set value at position 3 to min(2, 3)increment position 1

(111)

position 1 = 1 value = 2

position 2 = 4 value = 3

Temporary Array Original Array

position 3 = 1 value = 2

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 2 0 0 0 0 0

set value at position 3 to min(2, 3)

(112)

position 1 = 2 value = 5

position 2 = 4 value = 3

Temporary Array Original Array

position 3 = 1 value = 2

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 2 0 0 0 0 0

set value at position 3 to min(2, 3)

increment position 1

(113)

position 1 = 2 value = 5

position 2 = 4 value = 3

Temporary Array Original Array

position 3 = 2 value = 0

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 2 0 0 0 0 0

set value at position 3 to min(2, 3)increment position 1

(114)

position 1 = 2 value = 5

position 2 = 4 value = 3

Temporary Array Original Array

position 3 = 2 value = 0

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

(115)

position 1 = 2 value = 5

position 2 = 4 value = 3

Temporary Array Original Array

position 3 = 2 value = 0

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 2 0 0 0 0 0

set value at position 3 to min(5, 3)increment position 2

(116)

position 1 = 2 value = 5

position 2 = 4 value = 3

Temporary Array Original Array

position 3 = 2 value = 3

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 2 3 0 0 0 0

set value at position 3 to min(5, 3)

(117)

position 1 = 2 value = 5

position 2 = 5 value = 4

Temporary Array Original Array

position 3 = 2 value = 3

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 2 3 0 0 0 0

set value at position 3 to min(5, 3)

increment position 2

(118)

position 1 = 2 value = 5

position 2 = 5 value = 4

Temporary Array Original Array

position 3 = 3 value = 0

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 2 3 0 0 0 0

set value at position 3 to min(5, 3)increment position 2

(119)

position 1 = 2 value = 5

position 2 = 5 value = 4

Temporary Array Original Array

position 3 = 3 value = 0

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

(120)

position 1 = 2 value = 5

position 2 = 5 value = 4

Temporary Array Original Array

position 3 = 3 value = 0

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 2 3 0 0 0 0

set value at position 3 to min(5, 4)increment position 2

(121)

position 1 = 2 value = 5

position 2 = 5 value = 4

Temporary Array Original Array

position 3 = 3 value = 4

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 2 3 4 0 0 0

set value at position 3 to min(5, 4)

(122)

position 1 = 2 value = 5

position 2 = 6 value = 6

Temporary Array Original Array

position 3 = 3 value = 4

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 2 3 4 0 0 0

set value at position 3 to min(5, 4)

increment position 2

(123)

position 1 = 2 value = 5

position 2 = 6 value = 6

Temporary Array Original Array

position 3 = 4 value = 0

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 2 3 4 0 0 0

set value at position 3 to min(5, 4)increment position 2

(124)

position 1 = 2 value = 5

position 2 = 6 value = 6

Temporary Array Original Array

position 3 = 4 value = 0

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

(125)

position 1 = 2 value = 5

position 2 = 6 value = 6

Temporary Array Original Array

position 3 = 4 value = 0

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 2 3 4 0 0 0

set value at position 3 to min(5, 6)increment position 1

(126)

position 1 = 2 value = 5

position 2 = 6 value = 6

Temporary Array Original Array

position 3 = 4 value = 5

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 2 3 4 5 0 0

set value at position 3 to min(5, 6)

(127)

position 1 = 3 value = 8

position 2 = 6 value = 6

Temporary Array Original Array

position 3 = 4 value = 5

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 2 3 4 5 0 0

set value at position 3 to min(5, 6)

increment position 1

(128)

position 1 = 3 value = 8

position 2 = 6 value = 6

Temporary Array Original Array

position 3 = 5 value = 0

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 2 3 4 5 0 0

set value at position 3 to min(5, 6)increment position 1

(129)

position 1 = 3 value = 8

position 2 = 6 value = 6

Temporary Array Original Array

position 3 = 5 value = 0

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

(130)

position 1 = 3 value = 8

position 2 = 6 value = 6

Temporary Array Original Array

position 3 = 5 value = 0

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 2 3 4 5 0 0

set value at position 3 to min(8, 6)increment position 2

(131)

position 1 = 3 value = 8

position 2 = 6 value = 6

Temporary Array Original Array

position 3 = 5 value = 6

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 2 3 4 5 6 0

set value at position 3 to min(8, 6)

(132)

position 1 = 3 value = 8

position 2 = 7 value = N/A Temporary Array Original Array

position 3 = 5 value = 6

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 2 3 4 5 6 0

set value at position 3 to min(8, 6)

increment position 2

(133)

position 1 = 3 value = 8

position 2 = 7 value = N/A Temporary Array Original Array

position 3 = 6 value = 0

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 2 3 4 5 6 0

set value at position 3 to min(8, 6)increment position 2

(134)

position 1 = 3 value = 8

position 2 = 7 value = N/A Temporary Array Original Array

position 3 = 6 value = 0

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

(135)

position 1 = 3 value = 8

position 2 = 7 value = N/A Temporary Array Original Array

position 3 = 6 value = 0

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 2 3 4 5 6 0

position 2 > max position

copy from original to temporary

from position 1 to middle position

(136)

position 1 = 3 value = 8

position 2 = 7 value = N/A Temporary Array Original Array

position 3 = 6 value = 0

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 2 3 4 5 6 0

position 2 > max position

copy from original to temporary

from position 1 to middle position

(137)

position 1 = 3 value = 8

position 2 = 7 value = N/A Temporary Array Original Array

position 3 = 6 value = 0

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 2 3 4 5 6 8

position 2 > max position

copy from original to temporary

from position 1 to middle position

(138)

position 1 = 3 value = 8

position 2 = 7 value = N/A Temporary Array Original Array

position 3 = 7 value = N/A

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 2 3 4 5 6 8

position 2 > max position

copy from original to temporary

from position 1 to middle position

(139)

position 1 = 3 value = 8

position 2 = 7 value = N/A Temporary Array Original Array

position 3 = 7 value = N/A

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

(140)

position 1 = 3 value = 8

position 2 = 7 value = N/A Temporary Array Original Array

position 3 = 7 value = N/A

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 2 3 4 5 6 8

position 3 = length of temporary arraycopy everything from the temporary

(141)

position 1 = 3 value = 8

position 2 = 7 value = N/A Temporary Array Original Array

position 3 = 7 value = N/A

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 2 3 4 5 6 8

position 3 = length of temporary array

copy everything from the temporary

(142)

position 1 = 3 value = 8

position 2 = 7 value = N/A Temporary Array Original Array

position 3 = 7 value = N/A

1 2 5 8 3 4 6

min position = 0

middle position = 3 max position = 6

1 2 3 4 5 6 8

position 3 = length of temporary array

copy everything from the temporary

(143)

1 2 3 4 5 6 8

1 2 5 8 3 4 6

2 8 1 5

2 8 5 1 3 4

6 3 4

(144)

1 2 3 4 5 6 8

1 2 5 8 3 4 6

2 8 1 5

2 8 5 1 3 4

6 3 4

(145)

1 2 3 4 5 6 8

(146)

Merge Sort

Video

References

Related documents