Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Reka bentuk struktur data baris gilir untuk mendapatkan nilai minimum atau maksimum dalam masa O(1).

Reka bentuk struktur data baris gilir untuk mendapatkan nilai minimum atau maksimum dalam masa O(1).

PHPz
PHPzke hadapan
2023-09-10 14:33:021004semak imbas

Reka bentuk struktur data baris gilir untuk mendapatkan nilai minimum atau maksimum dalam masa O(1).

C++ mempunyai fail pengepala deque untuk mengendalikan sifat tindanan dan baris gilir. Dalam struktur data, menyelesaikan masalah kerumitan masa O(1) memerlukan masa yang tetap. Dengan menggunakan deque dalam program ini, kami mendapat kelebihan menggunakan kedua-dua tindanan dan baris gilir.

Dalam artikel ini, kami akan menyelesaikan struktur data baris gilir untuk mendapatkan nilai minimum atau maksimum nombor dalam masa O(1).

tatabahasa

deque<data_type> name_of_queue;

parameter

  • deque - Ini dikenali sebagai deque, yang memesan set item atau nombor yang setara dengan baris gilir.

  • data_type - Jenis data yang digunakan, seperti int, float, dll.

  • name_of_queue - Mana-mana nama yang diberikan kepada baris gilir, seperti ab, cd, dsb.

front()

front() ialah fungsi yang dipratentukan dalam C++ STL, yang secara langsung merujuk kepada kedudukan indeks pertama baris gilir.

back()

back() ialah fungsi yang telah ditetapkan dalam C++ STL, yang secara langsung merujuk kepada kedudukan indeks terakhir baris gilir.

push_back()

push_back() juga merupakan fungsi pratakrif untuk memasukkan elemen dari belakang.

Algoritma

  • Kami akan menggunakan fail pengepala 'iostream' dan 'deque' untuk memulakan program.

  • Kami masukkan ke dalam deque untuk mengendalikan nilai maksimum atau minimum nombor.

    • "deque dq" - Dengan menggunakannya, kami boleh mendayakan sifat tindanan dan baris gilir

  • Bermula dari gelung for, kami memasukkan elemen dalam julat daripada 10 hingga 15. Kemudian gunakan kaedah yang dipanggil 'push_back[i ]' yang menerima 'i' sebagai parameter dan menggunakan gelung for untuk menolak elemen tatasusunan.

  • Kemudian, kami menggunakan fungsi pratakrif front() dan back() untuk mencipta dua pembolehubah untuk mencari minimum dan maksimum nilai nombor. front() mencari indeks pertama untuk mewakili nombor terkecil, manakala back() mencari indeks terakhir untuk mewakili nombor terbesar.

  • Sekarang kami memulakan gelung for untuk mengulangi panjang nombor indeks dan menggunakan panjang itu untuk mengklasifikasikan perbandingan elemen terkecil dan terbesar sebagai 'dq[i]'. Jadi, ini akan mencari nombor minimum dan maksimum.

  • Akhir sekali, kami mencetak output panjang minimum dan maksimum dengan bantuan pembolehubah 'min_element' dan 'max_element'.

    李>

Contoh

Dalam program ini, kami akan menyelesaikan struktur data baris gilir untuk mendapatkan nilai minimum dan maksimum dalam masa O(1).

#include <iostream>
#include <deque>
using namespace std;
int main() {
deque<int> dq; 
   // double ended queue
   // insert elements into the deque using a loop
   for(int i = 10; i <= 15; i++) {
      dq.push_back(i);
   }
   // find the minimum and maximum elements
   int min_element = dq.front();
   int max_element = dq.back();

   for(int i = 1; i < dq.size(); i++) {
      if(dq[i] < min_element) {
         min_element = dq[i];
      }
      if(dq[i] > max_element) {
         max_element = dq[i];
      }
   }
   //Print the minimum and maximum elements
   cout << "Minimum element: " << min_element << endl;
   cout << "Maximum element: " << max_element << endl;
   return 0;
}

Output

Minimum element: 10
Maximum element: 15

KESIMPULAN

Kami meneroka konsep struktur data baris gilir untuk mencari elemen terkecil atau terbesar. Kami melihat cara front() dan belakang() boleh digunakan untuk mencari nilai minimum dan maksimum elemen, dan juga cara menambah tolak balik pada penghujung elemen yang diindeks. Dengan menggunakan deque kita boleh menangani masalah dalam kerumitan masa O(1).

Atas ialah kandungan terperinci Reka bentuk struktur data baris gilir untuk mendapatkan nilai minimum atau maksimum dalam masa O(1).. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam