Ҳама рақамҳои манфиро ба оғоз ва мусбатро бо фазои доимии изофӣ ба охир расонед


Сатҳи душворӣ осон
Аксар вақт пурсида мешавад Capgemini саёҳат кардан MAQ ҳалли o9 TCS
тартиботи ҳарбӣ Sorting

Фарз мекунем, ки шумо як асал ададҳо. Он аз рақамҳои манфӣ ва мусбат иборат аст ва дар ҳалли масъала хоҳиш карда мешавад, ки ҳамаи унсурҳои манфӣ ва мусбатро ба чапи массив ва ба тарафи рости массив бидуни истифодаи фазои иловагӣ иваз кунед / интиқол диҳед. Ин ҳалли интиқоли ҳамаи рақамҳои манфӣ ба аввал ва мусбат бо фазои иловагии доимӣ хоҳад буд.

мисол

 Қайд:

arr[]={2,4,-10,13,-7,-60,52,8,-19 }

Натиҷа:

-10 -7 -60 -19 4 2 52 8 13

Шарҳ: Азбаски ҳамаи рақамҳо ба тарафи чап ва ҳамаи мусбат ба тарафи рост гузаронида шудаанд.

Ҳама рақамҳои манфиро ба оғоз ва мусбатро бо фазои доимии изофӣ ба охир расонед

Алгоритм

  1. J-ро ба 0 таъин кунед.
  2. Гузариш аз массив аз 0 то n (танҳо, ки n дарозии массив аст).
    1. Санҷед, ки ягон унсури массив аз 0 камтар аст,
      1. Санҷед, ки ман набояд ба j баробар бошам,
        1. Арзиши индекси arr [i] ва arr [j] -ро иваз кунед ва арзиши j-ро зиёд кунед.
  3. Массивро чоп кунед.

Шарҳи интиқоли ҳама рақамҳои манфӣ ба оғоз ва мусбат ба охир

Ба мо массиви бутун дода мешавад ва массив дорои унсурҳои мусбат ва манфӣ мебошад. Мо хоҳиш кардем, ки ҳамаи унсурҳои манфӣ ба чап ва рақамҳои мусбат ба рост гузаранд. Барои ин, мо мехоҳем своп ҳама рақамҳо, ки унсурҳои мусбат ва манфӣ мебошанд. Аввал массивро тай кунед ва пас рақамҳои манфиро санҷед, агар рақам манфӣ бошад, танҳо мо иваз кардани арзишҳоро хоҳем гирифт.

Қимати j-ро ба 0 таъин кунед, он барои иваз кардани арзиши алтернативӣ истифода мешавад. Мо гашти массивро оғоз намуда, ҳар як рақамро месанҷем, зеро arr [i] аз 0 камтар аст, агар он аз 0 камтар бошад, маънои онро пайдо кардем, ки шумораи манфиро пайдо кардем ва аз ин рӯ санҷида мешавем, ки ҳарду индекс яксон нестанд, оё ҳамаи шартҳои дар боло овардашуда дурустанд, пас мо рақамҳоро иваз мекунем, зеро arr [i] ва arr [j] иваз карда мешаванд ва арзиши j -ро зиёд мекунанд. мо ин гардишро то он даме идома хоҳем дод, ки ҳамаи арзишҳои имконпазир гузаронида шаванд ва мувофиқи шарти додашуда иваз ва тағир дода шаванд.

Мо шартро санҷидем, ки arr [i] аз 0 камтар аст, зеро мо танҳо рақамҳои манфиро тартиб медиҳем, ҳамаи рақамҳои манфӣ пас аз иваз кардан ба чапи массив ва ҳамаи рақамҳои мусбат ба таври худкор ба рост ҷойгир карда мешаванд массиви. Пас аз ҳама иваз кардани мо, мо бояд танҳо массиеро чоп кунем, ки дар он амалҳои мубодила иҷро шуда бошанд.

татбиќи

Барномаи C ++ барои интиқол додани ҳамаи рақамҳои манфӣ ба оғоз ва мусбат ба охир

#include<iostream>

using namespace std;

void shiftIntegers(int arr[], int n)
{
    int j = 0;
    for (int i = 0; i < n; i++)
    {
        if (arr[i] < 0)
        {
            if (i != j)
                swap(arr[i], arr[j]);
            j++;
        }
    }
    for (int i = 0; i < n; i++)
        printf("%d ", arr[i]);
}
int main()
{
    int arr[] = { 2,4,-10,13,-7,-60,52,8,-19 };
    int n = sizeof(arr) / sizeof(arr[0]);
    shiftIntegers(arr, n);

    return 0;
}
-10 -7 -60 -19 4 2 52 8 13

Барномаи Java барои интиқол додани ҳамаи рақамҳои манфӣ ба оғоз ва мусбат ба охир

class rearrangeNegativePositive
{
    public static void shiftIntegers(int arr[], int n)
    {
        int j = 0, temp;
        for (int i = 0; i < n; i++)
        {
            if (arr[i] < 0)
            {
                if (i != j)
                {
                    temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
                j++;
            }
        }
    }
    public static void printArray(int arr[], int n)
    {
        for (int i = 0; i < n; i++)
            System.out.print(arr[i] + " ");
    }
    public static void main(String args[])
    {
        int arr[] = { 2,4,-10,13,-7,-60,52,8,-19 };
        int n = arr.length;

        shiftIntegers(arr, n);
        printArray(arr, n);
    }
}
-10 -7 -60 -19 4 2 52 8 13

Таҳлили мураккабӣ барои интиқоли ҳамаи рақамҳои манфӣ ба оғоз ва мусбат ба охир

Мураккабии вақт

Эй (н) ки дар "Н" шумораи унсурҳои массив аст.

Мураккабии фазо

О (1) зеро ягон ҷои иловагӣ лозим нест.

хулоса

Ин барнома барои интиқол додани ҳамаи рақамҳои манфӣ ба аввал ва мусбат бо хоҷагии доимии иловагӣ дар Java ва C ++ мебошад.

ишора