Бардык терс сандарды Баштапкыга, ал эми Позитивдүү Туруктуу Космос мейкиндиги менен жылдырыңыз


Кыйынчылык деңгээли жеңил
Көп суралган Capgemini селсаяктоо MAQ o9 чечимдери TCS
согуштук тизме сорттоо

Сизде ан бар дейли согуштук тизме бүтүн сандар. Ал терс жана оң сандардан турат жана көйгөйдүн чечими бардык терс жана оң элементтерди кошумча орун колдонбостон, массивдин сол жагына жана массивдин оң жагына жылдырууну / жылдырууну суранат. Бул бардык терс сандарды башталышка, ал эми оң аяктоону туруктуу кошумча мейкиндик менен жылдыруу үчүн чечим болот.

мисал

 киргизүү:

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

Output:

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

Explanation: Бардык сандар солго жана бардык оң сан оңго жылдырылгандыктан.

Бардык терс сандарды Баштапкыга, ал эми Позитивдүү Туруктуу Космос мейкиндиги менен жылдырыңыз

Algorithm

  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

Бардык терс сандарды башына, ал эми аягына чейин позитивдүү жылдыруу үчүн татаалдыкты талдоо

Убакыт татаалдыгы

O (N) кайда "N" массивдеги элементтердин саны.

Космостун татаалдыгы

O (1) ашыкча орун талап кылынбагандыктан.

жыйынтыктоо

Бул бардык терс сандарды башына жана оңду аяктоо үчүн Java жана C ++ тилдеринде туруктуу ашыкча орун менен жылдыруу программасы.

шилтеме