Priority queue-н тухай.
Priority_queue гэдэг нь хамгийн их утгатай элемэнтийг хамгийн эхэнд нь хадгалдаг бүтэц. Энэ нь эрэмбэлдэг гэсэн үг биш. Ашигтай тал нь гэвэл элемэнт нэмэх, болон хамгийн их элемэнтийг устгахад log(N) үйлдэл хийнэ(2суурьтай үүнээс цааш сануулахгүй). Харин хамгийн их элемэнтийг мэдэхэд 1 үйлдэл юм. Доорхи код энэ хаяг дээр байгаа.
Priority_queue гэдэг нь хамгийн их утгатай элемэнтийг хамгийн эхэнд нь хадгалдаг бүтэц. Энэ нь эрэмбэлдэг гэсэн үг биш. Ашигтай тал нь гэвэл элемэнт нэмэх, болон хамгийн их элемэнтийг устгахад log(N) үйлдэл хийнэ(2суурьтай үүнээс цааш сануулахгүй). Харин хамгийн их элемэнтийг мэдэхэд 1 үйлдэл юм. Доорхи код энэ хаяг дээр байгаа.
- push(утга) - утгыг нэмэх. (элемэнт нэмэх)
- pop() - хамгийн их элемэнтийг устгах.
- top() - хамгийн их элемэнтийн утгыг буцаана.
- size() - элемэнтийн хэмжээ.
- empty() - хоосон бол 1 үгүй бол 0 гэсэн утгыг буцаана. (True or False)
- // priority_queue
- #include <iostream>
- #include <queue> // priority_queue агуулж буй сан
- using namespace std;
- int main() {
- /*
- priority_queue гэдэг нь хамгийн их утгатай элемэнтийг
- хамгийн эхэнд нь хадгалдаг бүтэц. Энэ нь эрэмбэлдэг гэсэн
- үг биш. Ашигтай тал нь гэвэл элемэнт нэмэх, болон
- хамгийн их элемэнтийг устгахад log(N) үйлдэл хийнэ.
- Харин хамгийн их элемэнтийг мэдэхэд 1 үйлдэл юм.
- */
- priority_queue <int> pq; // int төрлийн утга авдаг
- // priority_queue (анх хоосон)
- pq.push( 3 ); // 3 гэсэн элемэнтийг нэмж өгж байна.
- cout << pq.top() << endl; // одоогийн байдлаар хамгийн их
- // элемэнтийг хэвлэж байна.
- cout << "-------------------------------------------\n";
- pq.push( 4 ); // 4 гэсэн элемэнтийг нэмж өгж байна.
- cout << pq.top() << endl; // одоогийн байдлаар хамгийн их
- // элемэнтийг хэвлэж байна.
- cout << "-------------------------------------------\n";
- pq.push( 2 ); // 2 гэсэн элемэнтийг нэмж өгж байна.
- cout << pq.top() << endl; // одоогийн байдлаар хамгийн их
- // элемэнтийг хэвлэж байна.
- cout << "-------------------------------------------\n";
- pq.pop();
- cout << pq.top() << endl; // одоогийн байдлаар хамгийн их
- // элемэнтийг хэвлэж байна.
- cout << "-------------------------------------------\n";
- pq.pop();
- cout << pq.top() << endl; // одоогийн байдлаар хамгийн их
- // элемэнтийг хэвлэж байна.
- cout << "-------------------------------------------\n";
- cout << pq.size() << endl; // одоо байгаа элемэнтийн хэмжээг хэвлэхы
- return 0;
- }
Comments
Post a Comment