Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Program C++ untuk menyusun semula tatasusunan dalam bentuk max-min

Program C++ untuk menyusun semula tatasusunan dalam bentuk max-min

王林
王林ke hadapan
2023-08-28 14:29:06758semak imbas

Program C++ untuk menyusun semula tatasusunan dalam bentuk max-min

Kami mendapat tatasusunan integer, yang boleh disusun dalam cara yang disusun/tidak diisih. Tugasnya adalah untuk mengisih tatasusunan terlebih dahulu (jika nilai tidak diisih) dan kemudian menyusun tatasusunan sedemikian rupa sehingga elemen pertama tatasusunan adalah nilai maksimum, elemen kedua adalah nilai minimum, dan yang ketiga elemen ialah tatasusunan. Maksimum kedua, yang keempat akan menjadi minimum kedua, dan seterusnya.

Mari lihat pelbagai senario input dan output untuk situasi ini -

input − int arr[] = {7, 5, 2, 3, 4, 9, 10, 5 }

Array sebelum sorting

: 2 3 4 5 5 7 9 10 Susun semula tatasusunan dalam bentuk maks-min sebagai: 10 2 9 3 7 4 5 5

Penjelasan

− Kami mendapat tatasusunan jenis integer yang mengandungi nilai {7, 5, 2, 3, 4, 9, 10 , 5 } . Mula-mula, kita mengisih tatasusunan, ia akan menjadi {2 3 4 5 5 7 9 10}. Kedua, susun elemen terbesar di arr[0] (iaitu 10), kemudian susun elemen terkecil di arr[1] (iaitu 2), kemudian susun elemen kedua terbesar di arr[2] (iaitu 9), dan seterusnya analogi. Tatasusunan keputusan akhir ialah 10 2 9 3 7 4 5 5

Input

− int arr[] = {2, 4, 1, 6, 7}

Output

− Tatasusunan sebelum mengisih, 1 4, 6, 7 Susun semula tatasusunan dalam bentuk maks-min sebagai: 7, 1, 6, 2, 4

Penjelasan

− Kami mendapat tatasusunan jenis integer yang mengandungi nilai {2, 4, 1, 6, 7}. Mula-mula kita mengisih tatasusunan, hasilnya ialah {1,2,4,6,7}. Kedua, susun elemen terbesar di arr[0], iaitu 7 kemudian elemen terkecil di arr[1] iaitu 1 kemudian elemen kedua terbesar di arr[2] iaitu 6 dan seterusnya. Tatasusunan akhir ialah 7, 1, 6, 2, 4

Kaedah yang digunakan dalam atur cara di bawah adalah seperti berikut
  • Masukkan tatasusunan elemen jenis integer dan kira saiz tatasusunan. Panggil kaedah isihan C++ STL dengan menghantar arr[] dan saiz tatasusunan sebagai argumen kepada fungsi. . Tetapkan pembolehubah lain kepada min dan tetapkannya kepada 0. Isytiharkan pembolehubah sebagai max_val dan tetapkan kepada arr[size - 1] + 1.
  • Mulakan gelung FOR dari i ke 0 sehingga i kurang daripada saiz. Di dalam gelung, semak JIKA i % 2 = 0, kemudian tetapkan arr[i] kepada arr[i] + (arr[maks] % max_val) * max_val dan kurangkan nilai maksimum sebanyak 1.
  • Jika tidak, tetapkan arr[i] kepada arr[i] + (arr[min] % max_val) * max_val dan naikkan min sebanyak 1.
    • Mulakan gelung FOR dari i ke 0 sehingga i kurang daripada saiz. Di dalam gelung, tetapkan arr[i] kepada arr[i] / max_val
    • Contoh

      #include <bits/stdc++.h>
      using namespace std;
      void Rearr_Max_Min(int arr[], int size){
         int max = size - 1;
         int min = 0;
         int max_val = arr[size - 1] + 1;
         for (int i = 0; i < size; i++){
            if (i % 2 == 0){
               arr[i] += (arr[max] % max_val) * max_val;
               max--;
            }
            else{
               arr[i] += (arr[min] % max_val) * max_val;
               min++;
            }
         }
         for(int i = 0; i < size; i++){
            arr[i] = arr[i] / max_val;
         }
      }
      int main(){
         //input an array
            int arr[] = {7, 5, 2, 3, 4, 9, 10, 5 };
            int size = sizeof(arr) / sizeof(arr[0]);
            //sort an array
            sort(arr, arr + size);
            //print the original Array after sorting
            cout<<"Array before Arrangement: ";
            for (int i = 0; i < size; i++){
               cout << arr[i] << " ";
            }
            //calling the function to rearrange the array
            Rearr_Max_Min(arr, size);
            //print the array after rearranging the values
            cout<<"\nRearrangement of an array in maximum minimum form is: ";
            for(int i = 0; i < size; i++){
               cout<< arr[i] << " ";
            }
         return 0;
      }

      Output
    • Jika kita menjalankan kod di atas, ia akan menghasilkan output berikut

      Array before Arrangement: 2 3 4 5 5 7 9 10
      Rearrangement of an array in maximum minimum form is: 10 2 9 3 7 4 5 5

Atas ialah kandungan terperinci Program C++ untuk menyusun semula tatasusunan dalam bentuk max-min. 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

Artikel berkaitan

Lihat lagi