第七章集合与搜索 集合及其表示 等价类与并查集 静态搜索表 二又搜索树 最优二叉搜索树 ∠树 小结
◼ 集合及其表示 ◼ 等价类与并查集 ◼ 静态搜索表 ◼ 二叉搜索树 ◼ 最优二叉搜索树 ◼ AVL树 ◼ 小结
集合及其表示 集合基本概念 集合是成员对象或元素)的一个群集。集合中 的成员可以是原子(单元素),也可以是集合 集合的成员必须互不相同。 在算法与数据结构中所遇到的集合,其单元 素通常是整数、字符、字符串或指针,且同 一集合中所有成员具有相同的数据类型。 colour=( red, orange, yellow, green, black, blue, purple, white name={“An”,“Cao”, “Liu”,“Ma”,“Peng”,“wang”,“ zhang”}
集合基本概念 集合及其表示 ◼ 集合是成员(对象或元素)的一个群集。集合中 的成员可以是原子(单元素),也可以是集合。 ◼ 集合的成员必须互不相同。 ◼ 在算法与数据结构中所遇到的集合,其单元 素通常是整数、字符、字符串或指针,且同 一集合中所有成员具有相同的数据类型。 ◼ colour = { red, orange, yellow, green, black, blue, purple, white } name = { “An”, “Cao”, “Liu”, “Ma”, “Peng”, “Wang”, “zhang” }
集合中的成员一般是无序的,没有先后次序关 系。但在表示它时,常常写在一个序列里。 我们常设定集合中的单元素具有线性有序关系 此关系可记作“<”,表示“优先于”。 若a,b是集合中的两个单元素,则ab,a=b, >b三者必居其 a若a,b,c是集合中的三个单元素,且a>b, b>c,则a>c。(传递性) 整数、字符和字符串都有一个自然的线性顺序。 而指针也可以依据其在序列中安排的位置给予 一个线性顺序。 集合操作有求集合的并、交、差、判存在等
◼ 集合中的成员一般是无序的,没有先后次序关 系。但在表示它时,常常写在一个序列里。 ◼ 我们常设定集合中的单元素具有线性有序关系, 此关系可记作“<”,表示“优先于” 。 ◼ 若a, b是集合中的两个单元素,则a<b, a==b, a>b三者必居其一; ◼ 若a, b, c是集合中的三个单元素,且a>b, b>c,则a>c。(传递性) ◼ 整数、字符和字符串都有一个自然的线性顺序。 而指针也可以依据其在序列中安排的位置给予 一个线性顺序。 集合操作有求集合的并、交、差、判存在等
B (a)A∪B(或A+B) (b)A∩B(或AB) (c)A-B 集合运算的文氏(venn)图 集合(Se)的抽象数据类型 Template <class Type> class Set t Set( int MaxSetsize ): MaxSize( maxsetsize ) void MakeEmpty( set &s ) int AddMember( set &s, const Type x int DelMember set &s, const Type & x);
集合运算的文氏(Venn)图 集合(Set)的抽象数据类型 Template <class Type> class Set { Set ( int MaxSetSize ) : MaxSize ( MaxSetSize ); void MakeEmpty ( Set &s ); int AddMember ( Set &s, const Type x ); int DelMember ( Set &s, const Type & x );
void Assign( Set& sl, Set& s2 ) void Union( set& sl, set& s2 void Intersection( Set& sl, Set& s2 ) void Difference( set& sl, set& s2 ); int Contains( Set &s, const Type &x ); int Equal( set &sl, set &s2) int SubSet( set &sl, set &s2 )
void Assign ( Set& s1, Set& s2 ); void Union ( Set& s1, Set& s2 ); void Intersection ( Set& s1, Set& s2 ); void Difference ( Set& s1, Set& s2 ); int Contains ( Set &s, const Type & x ); int Equal ( Set &s1, Set &s2 ); int SubSet ( Set &s1, Set &s2 ); }