基本排序演算法

2021-08-20 18:24:36 字數 1008 閱讀 1029

最近看演算法導論,把書中基本排序演算法的偽**用c++實現了一下。

插入排序

void insert_sort(int a, int length)

a[j + 1] = k;

}}

氣泡排序,書中描述為流行但低效的排序演算法

void bubble_sort(int a, int length)

} }}

歸併排序,非原址排序,因而不適合大量資料的排序

void merge(int a, int p, int q, int r)

else

}delete l;

delete r;

}void merge_sort(int a, int p , int r)

}

堆排序

void max_heapify(int a, int heap_size, int i)

else

largest = i;

if (r <= heap_size - 1 && a[r] > a[largest])

if (largest != i) }

void build_max_heap(int a, int length, int& heap_size)

}void heap_sort(int a, int length)

}

快速排序,雖然最壞情況下比堆排序慢,但一般情況下比堆排序快

int partition(int a, int p, int r)

} int k = a[i + 1];

a[i + 1] = a[r];

a[r] = k;

return i + 1;

}void quick_sort(int a, int p, int r)

}

基本排序排序演算法

時空複雜度 氣泡排序 時間o n 2 額外空間o 1 插入排序 時間o n 2 額外空間o 1 選擇排序 時間o n 2 額外空間o 1 基數排序 時間o k n k logn max 額外空間o n 臨時儲存 o b 記數,b為基的大小 記數排序 時間o n k 額外空間o k 希爾排序 時間o ...

基本排序排序演算法

時空複雜度 氣泡排序 時間o n 2 額外空間o 1 插入排序 時間o n 2 額外空間o 1 選擇排序 時間o n 2 額外空間o 1 基數排序 時間o k n k logn max 額外空間o n 臨時儲存 o b 記數,b為基的大小 記數排序 時間o n k 額外空間o k 希爾排序 時間o ...

基本排序演算法

將要排序的物件分作兩部份,乙個是已排序的,乙個是未排序的,從後端未排序部份選擇乙個最小值,並放入前端已排序部份的最後乙個,例如 排序前 70 80 31 37 10 1 48 60 33 80 1 80 31 37 10 70 48 60 33 80 選出最小值1 1 10 31 37 80 70 ...