Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Susun semula nilai ganjil dan genap dalam tertib berselang-seli menaik dalam C++

Susun semula nilai ganjil dan genap dalam tertib berselang-seli menaik dalam C++

PHPz
PHPzke hadapan
2023-09-12 18:45:021168semak imbas

Susun semula nilai ganjil dan genap dalam tertib berselang-seli menaik dalam C++

Kami mendapat tatasusunan jenis integer yang mengandungi nombor positif dan negatif, katakan, arr[] sebarang saiz tertentu. Tugasnya adalah untuk menyusun semula tatasusunan sedemikian rupa sehingga apabila elemen terendah dalam tatasusunan adalah ganjil, elemen dalam tatasusunan akan disusun semula sedemikian rupa sehingga nombor ganjil didahulukan dan nombor genap didahulukan. Cara kedua. Apabila elemen terendah dalam tatasusunan ialah genap, elemen tatasusunan akan disusun semula dengan cara genap pertama, ganjil kedua, jika bilangan elemen genap/ganjil lebih besar daripada bilangan elemen ganjil/genap, maka ia akan letak 0 dan cetak hasilnya.

Mari kita lihat pelbagai senario input dan output -

input− int arr[] = { 1, 1, 2, 2 , 5, 4 }

output− tertib ganjil menaik Dan nilai genap ialah: 1 2 1 2 5 4.

Penjelasan- Kami mendapat tatasusunan jenis integer. Sekarang kita akan menyemak elemen terkecil dalam tatasusunan iaitu 1 ialah nombor ganjil jadi unsur-unsur akan disusun dalam nombor ganjil dahulu, Malah cara kedua iaitu 1 2 1 2 5 4 adalah keluaran akhir.

Input− int arr[] = { 6, 3, 2, 8, 10, 4 }

Output− Menyusun semula nilai ganjil dan genap dalam tertib menaik secara berselang-seli 2 ialah: 0 6 0

Penjelasan − Kami mendapat tatasusunan jenis integer. Sekarang kita akan menyemak elemen terkecil dalam tatasusunan iaitu 2 ialah nombor genap jadi elem

Kaedah yang digunakan dalam atur cara di bawah adalah seperti berikut

    Masukkan tatasusunan elemen integer dan kira saiz tatasusunan.

  • Isih tatasusunan menggunakan kaedah isihan C++ STL, menghantar tatasusunan dan saiz tatasusunan kepada fungsi isih.

  • Isytiharkan pembolehubah integer dan tetapkannya dengan memanggil fungsi Penyusunan Semula(arr, saiz)

  • Dalam fungsi Penyusunan semula(arr, saiz)

    • buat dua jenis pembolehubah" "Integer" "vec_1" " data yang disimpan sebagai jenis vektor.

    • Buat temp pembolehubah sementara jenis integer dan tetapkannya kepada 0.

    • Isytiharkan satu lagi pembolehubah jenis bool sebagai semakan dan tetapkannya kepada SALAH.

    • Mulakan gelung FOR dari i ke 0 sehingga i kurang daripada saiz. Di dalam gelung, semak IF arr[i] % 2 = 0, kemudian tolak arr[i] ke dalam vec_1. Jika tidak, tolak arr[i] ke dalam vec_2.

    • Isytiharkan pembolehubah integer sebagai i dan j sebagai 0. Semak JIKA arr[0] % 2 = 0, kemudian tetapkan semakan kepada benar.

    • Mulakan apabila suhu kurang daripada saiz. Di dalam gelung, semak JIKA semak = benar, kemudian tetapkan arr[temp++] kepada vec_1[i++] dan semak kepada !check. Jika tidak, tukar arr[temp++] kepada vec_2[j++] dan tetapkan semak kepada !check.

  • Cetak hasilnya.

    li>

Contoh

#include <bits/stdc++.h>
using namespace std;
void Rearrangement(int arr[], int size){
   vector<int> vec_1, vec_2;
   int temp = 0;
   bool check = false;
   for(int i = 0; i < size; i++){
      if(arr[i] % 2 == 0){
         vec_1.push_back(arr[i]);
      }
      else{
         vec_2.push_back(arr[i]);
      }
   }
   int i = 0;
   int j = 0;
   if(arr[0] % 2 == 0){
      check = true;
   }
   while(temp < size){
      if(check == true){
         arr[temp++] = vec_1[i++];
         check = !check;
      }
      else{
         arr[temp++] = vec_2[j++];
         check = !check;
      }
   }
}
int main(){
   int arr[] = { 1, 1, 2, 2, 5, 4 };
   int size = sizeof(arr) / sizeof(int);
   //sort an array
   sort(arr, arr + size);
   cout<<"Rearrangement of Odd and Even values in Alternate Fashion in Ascending Order is: ";
   Rearrangement(arr, size);
   for(int i = 0; i < size; i++){
      cout << arr[i] << " ";
   }
   return 0;
}

Output

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

Rearrangement of Odd and Even values in Alternate Fashion in Ascending Order is: 1 2 1 2 5 4

Atas ialah kandungan terperinci Susun semula nilai ganjil dan genap dalam tertib berselang-seli menaik dalam 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