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

王林
Lepaskan: 2023-09-11 22:29:02
ke hadapan
831 orang telah melayarinya

使用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 }
Salin selepas log masuk

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;
}
Salin selepas log masuk

Output

2 15 4 13 6 11 8
Salin selepas log masuk

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!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan