Rumah > pembangunan bahagian belakang > C++ > 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
Lepaskan: 2023-09-12 18:45:02
ke hadapan
1207 orang telah melayarinya

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

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

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!

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