Sorting

Lecturer: 22527 Brine

What is sorting?

Sorting

  • Sorting describes the distribution of grain size of sediments, either in unconsolidated deposits or in sedimentary rocks. This should not be confused with crystallite size, which refers to the individual size of a crystal in a solid.

Sorting

  • 把一個陣列從依某一種比較方法排好
  • 中文:排序

今天要幹嘛

  • 討論不同的排序演算法
    • 有什麼好討論的,結果不是都一樣?
  • 討論的面向
    • 時間複雜度
    • (額外)空間複雜度
    • 寫出程式碼的難易度
    • 穩定性?
Stablility

穩定性

什麼是穩定性

穩定性

  • 一樣的東西保持順序
Common Algorithms

常見的排序演算法

Python Code

  • yes
a = [int(i) for i in input().split()]

b = a
a = sorted(a)
b = b.sort()

print(a)
print(b)

講真的

  • 今天我們要來看一些常見的排序演算法的內部結構
  • 會上來點人解釋和介紹他的複雜度和穩定性
  • 這次不會有答案在後面的簡報了ㄏㄏ

Selection sort

  • 每次把當前未排序陣列的最前面跟未排序陣列的最小值換位置
  • 複雜度?
  • 穩定性?

Insertion sort

  • 把當前手上的一直往前交換,直到不能換

Mergesort

  • 上節課教過
  • 大家聽得懂嗎

Heapsort

  • 把所有東西丟到一個堆中,慢慢拿出來
  • 相信他就對了

Quicksort

  • 選一個值,把比他小的放左邊,比他大的放右邊
    • 對左右的子陣列做一樣的事情
  • 怎麼選那個值?
  • 算機率?

Counting sort

  • 用數的。
  • 對,用數的
  • 把所有數字出現的次數先記起來,之後把他們補回去
  • 反向填充?
  • 假設陣列大小為 \(n\),最小值為 \(L\),最大值為 \(R\)
    • 複雜度?
    • 非比較?

Radix Sort

  • 把 \(0 \sim 9\) 列出來,把所有最後一位數字為 \(i\) 的放到新陣列 \(a_i\)
  • 把 \(a_i\) 的數字從 \(a_0 \sim a_9\) 分別照順序一起取出來
  • 對倒數第二、第三、第四位做
  • 複雜度?

隨機垃圾演算法

  • Bogosort
    • 把陣列打亂,之後看他是不是被排好的
    • 最佳複雜度?
    • 期望複雜度?
Exercise

練習題

題目

Thank you!

謝謝大家

Made with Slides.com