Rumah >pembangunan bahagian belakang >C++ >Susun semula susunan tatasusunan menggunakan C++ - nilai minimum, nilai maksimum, nilai minimum kedua, nilai maksimum kedua

Susun semula susunan tatasusunan menggunakan C++ - nilai minimum, nilai maksimum, nilai minimum kedua, nilai maksimum kedua

王林
王林ke hadapan
2023-09-11 22:29:02866semak imbas

使用C++重新排列数组顺序 - 最小值、最大值、第二小值、第二大值

Kami mendapat tatasusunan; kami perlu menyusun tatasusunan ini dalam susunan berikut: elemen pertama haruslah elemen terkecil, elemen kedua haruslah elemen terbesar, elemen ketiga haruslah elemen kedua terkecil, dan elemen terkecil. elemen keempat hendaklah elemen kedua terbesar dan seterusnya Contoh -

Input : arr[ ] = { 13, 34, 30, 56, 78, 3 }
Output : { 3, 78, 13, 56, 34, 30 }
Explanation : array is rearranged in the order { 1st min, 1st max, 2nd min, 2nd max, 3rd min, 3rd max }

Input : arr [ ] = { 2, 4, 6, 8, 11, 13, 15 }
Output : { 2, 15, 4, 13, 6, 11, 8 }

Cara untuk mencari penyelesaian

Anda boleh menggunakan dua pembolehubah "x" dan "y" untuk menyelesaikan di mana ia menunjukkan kepada elemen maksimum dan minimum , tetapi untuk tatasusunan ini hendaklah diisih, jadi kita perlu mengisih tatasusunan terlebih dahulu dan kemudian mencipta tatasusunan kosong baharu dengan saiz yang sama untuk menyimpan tatasusunan semula. Sekarang lelaran ke atas tatasusunan dan jika elemen lelaran berada pada indeks genap, tambahkan elemen arr[ x ] pada tatasusunan kosong dan tambahkan x sebanyak 1. Jika elemen berada pada indeks ganjil, tambahkan elemen arr[ y ] pada tatasusunan kosong dan kurangkan y sebanyak 1. Lakukan ini sehingga y menjadi lebih kecil daripada x.

Contoh

#include <bits/stdc++.h>
using namespace std;
int main () {
   int arr[] = { 2, 4, 6, 8, 11, 13, 15 };
   int n = sizeof (arr) / sizeof (arr[0]);

   // creating a new array to store the rearranged array.
   int reordered_array[n];

   // sorting the original array
   sort(arr, arr + n);

   // pointing variables to minimum and maximum element index.
   int x = 0, y = n - 1;
   int i = 0;

   // iterating over the array until max is less than or equals to max.
   while (x <= y) {
   // if i is even then store max index element

      if (i % 2 == 0) {
         reordered_array[i] = arr[x];
         x++;
      }
      // store min index element
      else {
         reordered_array[i] = arr[y];
         y--;
      }
      i++;
   }
   // printing the reordered array.
   for (int i = 0; i < n; i++)
      cout << reordered_array[i] << " ";

   // or we can update the original array
   // for (int i = 0; i < n; i++)
   // arr[i] = reordered_array[i];
   return 0;
}

Output

2 15 4 13 6 11 8

Penerangan kod di atas

  • pembolehubah dimulakan kepada x=0 dan y = array_length(n) - 1.
  • sementara( x<=y) berulang melalui tatasusunan sehingga x lebih besar daripada y.
  • Jika kiraan genap (x), maka elemen itu ditambah pada tatasusunan akhir dan pembolehubah x ditambah dengan 1.
  • Jika i ialah nombor ganjil, (y) elemen itu ditambah pada tatasusunan akhir dan pembolehubah y dikurangkan sebanyak 1.
  • Akhir sekali, simpan tatasusunan yang disusun semula dalam susunan_semula[].

Kesimpulan

Dalam artikel ini, kami membincangkan penyelesaian untuk menyusun semula tatasusunan yang diberikan dalam bentuk min, maksimum. 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 susunan tatasusunan menggunakan C++ - nilai minimum, nilai maksimum, nilai minimum kedua, nilai maksimum kedua. 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