Рубрики

Переставьте все элементы массива, кратные x, в порядке возрастания

Учитывая массив целых чисел 'arr' и число x, задача состоит в том, чтобы отсортировать все элементы, которые кратны x массива, в возрастающем порядке по их относительным позициям, то есть другие позиции других элементов не должны быть затронуты.

Примеры :

Input: arr[] = {10, 5, 8, 2, 15}, x = 5
Output: 5 10 8 2 15
We rearrange all multiples of 5 in increasing order, keeping other elements same.

Input: arr[] = {100, 12, 25, 50, 5}, x = 5
Output: 5 12 25 50 100

Подходить:

  1. Обойдите массив и убедитесь, что число кратно x. Если это так, сохраните его в векторе.
  2. Затем отсортируйте вектор в порядке возрастания.
  3. Снова обойдите массив и замените элементы, кратные 5, на векторные элементы один за другим.

Ниже приведена реализация вышеуказанного подхода:

C ++

// C ++ реализация подхода

  
#include <bits/stdc++.h>

using namespace std;

  
// Функция для сортировки всех
// кратно х от
// массив в порядке возрастания

void sortMultiples(int arr[], int n, int x)

{

    vector<int> v;

  

    // Вставляем все кратные 5 в вектор

    for (int i = 0; i < n; i++)

        if (arr[i] % x == 0)

            v.push_back(arr[i]);

  

    // Сортировка вектора

    sort(v.begin(), v.end());

  

    int j = 0;

  

    // обновляем элементы массива

    for (int i = 0; i < n; i++) {

        if (arr[i] % x == 0)

            arr[i] = v[j++];

    }

}

  
// Код драйвера

int main()

{

    int arr[] = { 125, 3, 15, 6, 100, 5 };

    int x = 5;  

    int n = sizeof(arr) / sizeof(arr[0]);

  

    sortMultiples(arr, n, x);

  

    // Распечатать результат

    for (int i = 0; i < n; i++) {

        cout << arr[i] << " ";

    }

  

    return 0;

}

Джава

import java.util.Collections;

import java.util.Vector;

  
// Java реализация подхода

class GFG {

  
// Функция для сортировки всех
// кратно х от
// массив в порядке возрастания

    static void sortMultiples(int arr[], int n, int x) {

        Vector<Integer> v = new Vector<Integer>();

  

        // Вставляем все кратные 5 в вектор

        for (int i = 0; i < n; i++) {

            if (arr[i] % x == 0) {

                v.add(arr[i]);

            }

        }

  

        // Сортировка вектора

        Collections.sort(v);

        // сортировать (v.begin (), v.end ());

  

        int j = 0;

  

        // обновляем элементы массива

        for (int i = 0; i < n; i++) {

            if (arr[i] % x == 0) {

                arr[i] = v.get(j++);

            }

        }

    }

  
// Код драйвера

    public static void main(String[] args) {

        int arr[] = {125, 3, 15, 6, 100, 5};

        int x = 5;

        int n = arr.length;

  

        sortMultiples(arr, n, x);

  

        // Распечатать результат

        for (int i = 0; i < n; i++) {

            System.out.print(arr[i]+" ");

        }

    }

}
// Этот код предоставлен Rajput-Ji

python3

# Python 3 реализация подхода

  
# Функция для сортировки всех кратных х
# из массива в порядке возрастания

def sortMultiples(arr, n, x):

    v = []

  

    # Вставить все кратные 5 в вектор

    for i in range(0, n, 1):

        if (arr[i] % x == 0):

            v.append(arr[i])

  

    # Сортировать вектор

    v.sort(reverse=False)

  

    j = 0

  

    # обновить элементы массива

    for i in range(0, n, 1):

        if (arr[i] % x == 0):

            arr[i] = v[j]

            j += 1

  
# Код драйвера

if __name__ == '__main__':

    arr = [ 125, 3, 15, 6, 100, 5

    x = 5

    n = len(arr)

  

    sortMultiples(arr, n, x)

  

    # Распечатать результат

    for i in range(0, n, 1):

        print(arr[i], end = " ")

  
# Этот код предоставлен
# Сурендра _Gangwar

C #

// C # реализация подхода

using System; 

using System.Collections.Generic; 

  

class GFG 

    // Функция для сортировки всех

    // кратно х от

    // массив в порядке возрастания

    static void sortMultiples(int []arr, 

                            int n, int x)

    {

        List<int> v = new List<int>();

        int i;

          

        // Вставляем все кратные 5 в вектор

        for (i = 0; i < n; i++)

        if (arr[i] % x == 0)

            v.Add(arr[i]); 

              

        // Сортировка вектора

        v.Sort();

        int j = 0;

  

        // обновляем элементы массива

        for (i = 0; i < n; i++)

        {

            if (arr[i] % x == 0)

                arr[i] = v[j++];

        }

    }

  

    // Код драйвера

    public static void Main() 

    

        int []arr = {125, 3, 15, 6, 100, 5}; 

        int x = 5;

        int n = arr.Length; 

        sortMultiples(arr, n, x); 

      

        // Распечатать результат

        for (int i = 0; i < n; i++) 

        

            Console.Write(arr[i] + " "); 

        

    }

}

  
// Этот код предоставлен
// Shivi_Aggarwal

Выход:

5 3 15 6 100 125

Рекомендуемые посты:

Переставьте все элементы массива, кратные x, в порядке возрастания

0.00 (0%) 0 votes