資料結構 排序演算法 秒懂演算法 洛谷刷題

2021-10-25 15:24:35 字數 1538 閱讀 2804

時間複雜度:

平均o(n*log2n) 最壞的情況o(n^2)

所以傳統的快排是無法ac的

#include

using

namespace std;

int n, a[

100005];

void

quicksort

(int array,

int l,

int r)

while

(left < right && array[left]

<= pivot)

left++;if

(left

} array[left]

=pivot;

quicksort

(array, l, right-1)

;quicksort

(array, left+

1, r);}

intmain()

quicksort

(a,1

, n)

;for

(int i =

1; i < n ; i++

) cout<

<

}

看了題解,運用二分思想,複雜度就降到o(log2n)了

#include

using

namespace std;

int n, a[

100005];

void

quicksort

(int array,

int l,

int r)

}while

(left<=right);if

(lquicksort

(array, l, right);if

(left

quicksort

(array, left, r);}

intmain()

quicksort

(a,1

, n)

;for

(int i =

1; i < n ; i++

) cout<

<

}

資料結構 排序演算法

include include define maxitem 100 typedef char keytype 5 typedef int elemtype typedef struct rec elemnode maxitem 氣泡排序演算法 void bubblesort elemnode r,...

資料結構 排序演算法

排序演算法分為內部排序和外部排序兩大類。內部排序 在計算機記憶體中完成的排序演算法 外部排序 不能再記憶體中文完成,必須在磁碟或者磁帶上完成的排序演算法 內部排序是研究的重點問題,通常我們講的八大排序演算法也主要是講的內部排序演算法。排序演算法的穩定性和時間空間複雜度 本文重點介紹以下幾種排序演算法...

資料結構 排序演算法

直接插入排序是指將r i r n 插入到已經有序的r 1 r i 1 序列中。r 0 是乙個哨兵,起到作為邊界條件並作為暫存單元的作用。實際上,一切為簡化邊界條件而引入的附加節點 元素 均可稱為哨兵。例如單鏈表中的頭結點。對於有n個記錄的集合,要進行n 1趟排序。其最優時間複雜度是o n 平均時間複...