Computer >> Máy Tính >  >> Lập trình >> C ++

Sắp xếp lại các giá trị Lẻ và Chẵn trong Thời trang Thay thế theo Thứ tự Tăng dần trong C + =+

Chúng ta được cung cấp một mảng kiểu số nguyên chứa cả số dương và số âm, giả sử arr [] có kích thước bất kỳ. Nhiệm vụ là sắp xếp lại một mảng theo cách mà khi phần tử thấp nhất trong mảng là số lẻ thì các phần tử của mảng sẽ được sắp xếp lại theo cách lẻ thứ nhất và thứ hai. Khi phần tử thấp nhất trong mảng là chẵn thì các phần tử của mảng sẽ được sắp xếp lại theo cách chẵn đầu tiên và lẻ thứ hai và nếu số phần tử chẵn / lẻ nhiều hơn số phần tử lẻ / chẵn thì nó sẽ đặt các chữ số 0 và in kết quả.

Hãy để chúng tôi xem các kịch bản đầu ra đầu vào khác nhau cho việc này -

Đầu vào - int arr [] ={1, 1, 2, 2, 5, 4}

Đầu ra - Sắp xếp lại các giá trị Lẻ và Chẵn trong Thời trang Thay thế theo Thứ tự Tăng dần là:1 2 1 2 5 4.

Giải thích - Ta được một mảng kiểu số nguyên. Bây giờ chúng ta sẽ kiểm tra xem phần tử nào là nhỏ nhất trong mảng, tức là 1 là giá trị lẻ để các phần tử sẽ được sắp xếp theo cách lẻ thứ nhất và thứ hai, tức là 1 2 1 2 5 4 là kết quả cuối cùng.

Đầu vào - int arr [] ={6, 3, 2, 8, 10, 4}

Đầu ra - Sắp xếp lại các giá trị Lẻ và Chẵn trong Thời trang Thay thế theo Thứ tự Tăng dần là:2 3 4 0 6 0

Giải thích - Ta được một mảng kiểu số nguyên. Bây giờ chúng ta sẽ kiểm tra xem phần tử nào nhỏ nhất trong mảng tức là 2 là giá trị chẵn nên elem

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Nhập một mảng các phần tử kiểu số nguyên và tính kích thước của một mảng.

  • Sắp xếp mảng bằng cách sử dụng phương pháp sắp xếp của C ++ STL bằng cách chuyển mảng và kích thước của mảng cho hàm sắp xếp.

  • Khai báo một biến số nguyên và đặt nó bằng lệnh gọi hàm Sắp xếp lại (arr, size)

  • Bên trong chức năng Sắp xếp lại (arr, size)

    • Tạo hai biến là ‘vec_1’ và ‘vec_2’ làm loại vectơ đang lưu trữ dữ liệu kiểu số nguyên.

    • Tạo một biến tạm thời có kiểu số nguyên dưới dạng tạm thời và đặt nó bằng 0.

    • Khai báo một biến khác kiểu bool khi kiểm tra và đặt nó với giá trị FALSE.

    • Bắt đầu vòng lặp FOR từ i đến 0 cho đến khi tôi nhỏ hơn kích thước. Bên trong vòng lặp, kiểm tra IF arr [i]% 2 =0 rồi đẩy arr [i] sang vec_1. ELSE, đẩy arr [i] sang vec_2.

    • Khai báo các biến số nguyên là i và j thành 0. Kiểm tra IF arr [0]% 2 =0 rồi đặt kiểm tra thành true.

    • Bắt đầu WHILE tạm thời nhỏ hơn kích thước. Bên trong vòng lặp, kiểm tra IF check =true, sau đó đặt arr [temp ++] thành vec_1 [i ++] và đặt kiểm tra thành! Kiểm tra. ELSE, arr [temp ++] thành vec_2 [j ++] và đặt kiểm tra thành! Kiểm tra.

  • In kết quả.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra Kết quả sau

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