Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Susun semula tatasusunan ke dalam bentuk max-min menggunakan C++

Susun semula tatasusunan ke dalam bentuk max-min menggunakan C++

WBOY
WBOYke hadapan
2023-09-03 19:45:101210semak imbas

Susun semula tatasusunan ke dalam bentuk max-min menggunakan C++

Kami mendapat tatasusunan yang diisih. Kita perlu menyusun tatasusunan ini dalam bentuk terbesar dan terkecil, iaitu elemen pertama ialah elemen terbesar, elemen kedua ialah elemen terkecil, elemen ketiga ialah elemen kedua terbesar, dan elemen keempat ialah elemen kedua terkecil. . Dan seterusnya seperti -

Input : arr[ ] = { 10, 20, 30, 40, 50, 60 }
Output : { 60, 10, 50, 20, 40, 30 }
Explanation : array is rearranged in the form { 1st max, 1st min, 2nd max, 2nd min, 3rd max, 3rd min }

Input : arr [ ] = { 15, 17, 19, 23, 36, 67, 69 }
Output : { 69, 15, 67, 17, 36, 19, 23 }

Ada cara untuk menyusun semula tatasusunan dalam bentuk maksimum dan minimum -

Cara mencari penyelesaian

Ada cara untuk menyusun semula tatasusunan dalam bentuk maksimum dan minimum -

Penunjuk berganda kaedah

Gunakan dua pembolehubah, min dan maks, di sini akan menunjuk kepada elemen terbesar dan terkecil, dan mencipta tatasusunan kosong baharu dengan saiz yang sama untuk menyimpan tatasusunan yang disusun semula. Sekarang ulangi tatasusunan dan jika elemen lelaran berada pada indeks genap, tambahkan elemen arr[maks] pada tatasusunan kosong dan kurangkan maks sebanyak 1. Jika elemen berada pada indeks ganjil, tambahkan elemen arr[min] pada tatasusunan kosong dan tambahkan min sebanyak 1. Lakukan ini sehingga maks kurang daripada min.

Contoh

#include <bits/stdc++.h>
using namespace std;

int main () {
   int arr[] = { 1, 2, 3, 4, 5, 6 };
   int n = sizeof (arr) / sizeof (arr[0]);
   // creating a new array to store the rearranged array.
   int final[n];
   // pointing variables to initial and final element index.
   int min = 0, max = n - 1;
   int count = 0;
   // iterating over the array until max is less than or equals to max.
   for (int i = 0; min <= max; i++) {
      // if count is even then store max index element

      if (count % 2 == 0) {
         final[i] = arr[max];
         max--;
      }
      // store min index element
      else {
         final[i] = arr[min];
         min++;
      }
      count++;
   }
   // printing the final rearranged array.
   for (int i = 0; i < n; i++)
      cout << final[ i ] << " ";
   return 0;
}

Output

6 1 5 2 4 3

Penerangan kod di atas

  • Pembolehubah dimulakan kepada min=0 dan maks = array_length(n) - 1.
  • untuk (int i = 0; min
  • Jika kiraan adalah ganjil, elemen (maks) ditambahkan pada tatasusunan akhir dan maks pembolehubah dikurangkan sebanyak 1.
  • Andaikan kiraan itu genap, maka (min). Dalam kes ini, elemen akan ditambah pada tatasusunan akhir dan min pembolehubah akan dinaikkan sebanyak 1.
  • Akhir sekali, tatasusunan hasil akan disimpan dalam tatasusunan [ ] Akhir.

Kesimpulan

Dalam artikel ini, kami membincangkan penyelesaian untuk menyusun semula tatasusunan yang diberikan ke dalam bentuk maksimum min. Kami membincangkan pendekatan kepada penyelesaian dan menyelesaikannya dengan penyelesaian optimistik dengan kerumitan masa O(n). Kami juga menulis program C++ untuk ini. Begitu juga, kita boleh menulis program ini dalam mana-mana bahasa lain seperti C, Java, Python, dll. Kami berharap artikel ini dapat membantu anda.

Atas ialah kandungan terperinci Susun semula tatasusunan ke dalam bentuk max-min menggunakan C++. 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