四 c 中的演算法 排序及相關操作 搜尋

2021-08-06 06:33:06 字數 3029 閱讀 7065

在已序區間搜尋指定的元素,【搜尋區間必須是有序的】

函式原型為:

template

bool binary_search(forwardit first, forwardit last, const t& value)

//第二種形式

template

bool binary_search(forwardit first, forwardit last, const t& value, compare comp)

說明:

1. 檢查已排序的範圍[first, last)內是否包含乙個元素等於value。

2. 第一種形式:使用運算子operator《比較元素

3. 第二種形式: 使用二元比較函式: comp

4. 返回值:找到返回true,否則false

用於檢查源區間中若干值是否存在。

函式原型:

//版本一

template

bool includes(inputit1 first1, inputit1 last1,

inputit2 first2, inputit2 last2)

return

true;

}//版本二

template

bool includes(inputit1 first1, inputit1 last1,

inputit2 first2, inputit2 last2, compare comp)

return

true;

}

說明:

1. 第一種形式:預設比較operator<

2. 第二種形式: 二元比較函式:comp

3. 返回值: true,false

1.lower_bound()

函式原型:

//版本一

templateforwardit, class

t>

forwardit

lower_bound(forwardit

first, forwardit

last, const

t& value)

else

count = step;

}return first;

}//版本二

templateforwardit, class

t, class

compare>

forwardit

lower_bound(forwardit

first, forwardit

last, const

t& value, compare

comp)

else

count = step;

}return first;

}

說明:

1. 第一種形式:預設比較operator<

2. 第二種形式: 二元比較函式:comp

3. 返回值:如果存在大於等於value的第乙個值,返回他的位置的迭代器,否則返回end()迭代器

2.upper_bound()

函式原型:

//版本一

templateforwardit, class

t>

forwardit

upper_bound(forwardit

first, forwardit

last,

const

t& value)

else

count = step;

}return first;

}//版本二

templateforwardit, class

t, class

compare>

forwardit

upper_bound(forwardit

first, forwardit

last,

const

t& value, compare

comp)

else

count = step;

}return first;

}

說明:

1. 第一種形式:預設比較operator<

2. 第二種形式: 二元比較函式:comp

3. 返回值:如果存在大於value的第乙個值,返回他的位置的迭代器,否則返回end()迭代器

3.equal_range()

返回乙個pair型別,第乙個成員是指向不小於value的第乙個元素的迭代器,第二個成員是指向大於value的第乙個元素的迭代器。

函式原型:

//版本一

template

std::pairequal_range(forwardit first, forwardit last,

const t& value)

//版本二

template

std::pairequal_range(forwardit first, forwardit last,

const t& value, compare comp);

例子:

------------------省略--------------

vector

vec1 = ;

pair::iterator, vector

::iterator> eq;

eq = equal_range(vec1.begin(), vec1.end(), 4);

------------------省略--------------

結果為:

vec1: 1   2   3   4   5   6   6   7

lower: 4 upper: 5

四 c 中的演算法 排序及相關操作 堆操作

堆 是一種組織序列元素的方式。堆的內部資料結構是二叉樹。兩大性質 1.堆的第乙個元素通常是最大的元素 2.能夠在對數時間內增加或移除乙個元素 堆的操作演算法 push heap pop heap sort heap make heap 等等 函式模型 template class randomit ...

C 中的容器及相關操作

關聯容器將值與鍵關聯在一起,並使用鍵來查詢值。stl提供了4種關聯容器 set multiset map multimap。set中,可反轉,可排序,鍵與值型別相同,鍵是唯一的,意味著集合中不會有多個相同的鍵。multiset中,可能有多個值的鍵相同。map中,鍵與值型別不同,鍵是唯一的,每個鍵只對...

C 中四種排序演算法

氣泡排序 using system namespace bubblesorter public class mainclass bubblesorter sh new bubblesorter sh.sort iarrary for int m 0 m iarrary.length m consol...