1. Trang chủ
  2. » Công Nghệ Thông Tin

Giới thiệu về các thuật toán - lec11

5 366 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Sorting IV: Stable Sorting, Radix Sort
Trường học Massachusetts Institute of Technology
Chuyên ngành Computer Science
Thể loại bài giảng
Năm xuất bản 2008
Thành phố Cambridge
Định dạng
Số trang 5
Dung lượng 0,99 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Giới thiệu về các thuật toán

Trang 1

6.006 Introduction to Algorithms

Spring 2008

For information about citing these materials or our Terms of Use, visit: http://ocw.mit.edu/terms

Trang 2

Lecture 11: Sorting IV: Stable Sorting, Radix Sort Lecture Overview

• Stable Sorting

Radix Sort

Quick Sort not officially a part of 6.006

• Sorting Races

Stable Sorting

Preserves input order among equal elements

3*

counting sort is stable

4

1 4’ 3* 4 3

Figure 1: Stability Selection Sort and Heap: Find maximum element and put it at end of array (swap with element at end of array) NOT STABLE!

3 2a 2b ← 2b 2a 3 define

2a <2b

Figure 2: Selection Sort Instability

Radix Sort

• Herman Hollerith card-sorting machine for 1890 census

• Digit by Digit sort by mechanical machine

1 Examine given column of each card in a deck

2 Distribute the card into one of 10 bins

1

Trang 3

3 Gather cards bin by bin, so cards with first place punched are on top of cards with second place punched, etc

.

.

80 cols

10 places Figure 3: Punch Card

MSB vs LSB?

Sort on most significant digit first or least significant digit first?

MSB strategy: Cards in 9 of 10 bins must be put aside, leading to a large number of intermediate piles

LSB strategy: Can gather sorted cards in bins appropriately to create a deck!

Example

3 4 6 8 4 7 3

2 5 5 3 3 2 5

9 7 7 9 6 0 5

7 3 4 4 6 3 8

2 5 3 5 5 2 3

0 5 6 7 7 9 9

7 3 4 8 3 4 6

2 2 3 3 5 5 5

0 9 6 9 5 7 7

3 3 4 4 6 7 8

2 5 3 5 5 2 3

9 5 6 7 7 0 9

Digit sort needs to be stable, else will get wrong result!

Figure 4: Example of Radix Sort

Trang 4

Analysis

Assume counting sort is auxiliary stable sort Θ(n + k) complexity

Suppose we have n words of b bits each

One pass of counting sort Θ(n + 2b

b passes of counting sort

passes Θ( (n + 2r)) minimized when r = lg n Θ( )

Quick Sort

This section is for “enrichment” only

Divide: Partition the array into two Sub-arrays around a pivot x such that elements in lower sub array ≤ x ≤ elements in upper sub array ← Linear Time

≤ x x ≥ x pivot

Figure 5: Pivot Definition

Conquer: Recursively sort the two sub arrays

Combine: Trivial

If we choose a pivot such that two sub arrays are roughly equal:

T (n) = 2T (n/2) + Θ(n) = ⇒ T (n) = Θ(n lg n)

If one array is much bigger:

T (n) = T (n − 1) + Θ(n) = ⇒ T (n) = Θ(n 2) Average case Θ(n lg n) assuming input array is randomized!

Trang 5

Sorting Races

Click here for a reference on this

Bubble Sort: Repeatedly step through the list to be sorted Compare 2 items, swap if they are in the wrong order Continue through list, until no swaps Repeat pass through list until no swaps Θ(n 2)

Shell Sort: Improves insertion sort by comparing elements separated by gaps Θ(nlg2 n)

Ngày đăng: 15/11/2012, 10:24

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN