線(xiàn)段樹(shù)是一棵完全二叉樹(shù),常用于解決區(qū)間統(tǒng)計(jì)問(wèn)題。 線(xiàn)段樹(shù)的結(jié)構(gòu) 通常用數(shù)組來(lái)模擬,開(kāi)4倍原始大小以避免越界。 從下標(biāo)為1的元素(根節(jié)點(diǎn))開(kāi)始存數(shù)...
假設(shè)有數(shù)組A[n],現(xiàn)要打亂元素的順序,使各個(gè)元素等概率地出現(xiàn)在各個(gè)位置,稱(chēng)為洗牌操作。 下面是一種簡(jiǎn)單高效的做法,其思路在從左往右掃描,每次從...
并查集(UnionFind)是一種簡(jiǎn)單高效的數(shù)據(jù)結(jié)構(gòu),主要用于解決一類(lèi)連通性判斷的問(wèn)題。以下是經(jīng)典描述:平面上最初有n個(gè)孤立的點(diǎn),編號(hào)分別為1~...
二叉堆是一棵完全二叉樹(shù),一般用數(shù)組來(lái)表示,且下標(biāo)從1開(kāi)始。 假設(shè)某個(gè)非根節(jié)點(diǎn)的下標(biāo)為n(>1),那么它的: 左子節(jié)點(diǎn)下標(biāo)為2n 右子節(jié)點(diǎn)下標(biāo)為2...
歸并排序是一種采用分治策略的簡(jiǎn)單高效排序算法,最好和最壞時(shí)間復(fù)雜度均為O(nlogn),優(yōu)勢(shì)在于它穩(wěn)定、適用于外排序,缺點(diǎn)在于需要額外的O(n)...
堆排序是另一種時(shí)間復(fù)雜度為O(nlogn)的排序算法,它的實(shí)現(xiàn)依賴(lài)于二叉堆,優(yōu)點(diǎn)是就地排序,無(wú)需額外空間,最壞時(shí)間復(fù)雜度也是O(nlogn),缺...
在基于比較的排序算法中,快速排序是目前公認(rèn)最快的排序算法,平均時(shí)間復(fù)雜度為O(nlogn)。優(yōu)勢(shì)在于簡(jiǎn)單、就地排序、速度快,缺點(diǎn)是不穩(wěn)定、最壞情...
康拓展開(kāi)主要用于解決字典序排列問(wèn)題。 問(wèn)題1:集合{1,2,3,4,5,6,7,8,9}構(gòu)成的全排列有9!個(gè),問(wèn)357412968在所有全排列中...