【数据结构】集合及运算
生活随笔
收集整理的這篇文章主要介紹了
【数据结构】集合及运算
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
集合的表示
集合運算:交、并、補、差,判定一個元素是否屬于某一集合
并查集:集合并、查某元素屬于什么集合
并查集問題中集合存儲如何實現?
可以用樹結構表示集合,樹的每個結點代表一個集合元素
采用數組存儲形式
集合運算
(1)查找某個元素所在的集合(用根結點表示)
int Find( SetType S[ ], ElementType X ) { /* 在數組S中查找值為X的元素所屬的集合 *//* MaxSize是全局變量,為數組S的最大長度 */int i;for ( i=0; i < MaxSize && S[i].Data != X; i++) ;if( i >= MaxSize ) return -1; /* 未找到X,返回-1 */for( ; S[i].Parent >= 0; i = S[i].Parent ) ;return i; /* 找到X所屬集合,返回樹根結點在數組S中的下標 */ }(2)集合的并運算
分別找到X1和X2兩個元素所在集合樹的根結點
如果它們不同根,則將其中一個根結點的父結點指針設置成另一個根結點的數組下標。
為了改善合并以后的查找性能,可以采用小的集合合并到相對大的集合中。(修改Union函數)
總結
以上是生活随笔為你收集整理的【数据结构】集合及运算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据结构】哈夫曼树与哈夫曼编码
- 下一篇: 【数据结构】图的遍历(BFS和DFS)