Померите све негативне бројеве на почетак и позитивне да бисте их завршили са сталним додатним размаком  


Ниво тешкоће Лако
Често питани у Цапгемини Пешачење МАК о9 решења ТЦС
Ред сортирање

Претпоставимо да имате поредак целих бројева. Састоји се и од негативних и од позитивних бројева, а исказ проблема тражи да се сви негативни и позитивни елементи померају / премештају лево од поља, односно десно од низа, без употребе додатног простора. Ово ће бити решење за померање свих негативних бројева на почетак и позитивне на крај са сталним додатним размаком.

Пример  

 Улаз:

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

Излаз:

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

objašnjenje: Пошто су сви бројеви померени улево, а сви позитивни удесно.

Померите све негативне бројеве на почетак и позитивне да бисте их завршили са сталним додатним размаком

Алгоритам  

  1. Подесите ј на 0.
  2. Прелазак низа од 0 до н (искључиво, где је н дужина низа).
    1. Проверите да ли је било који елемент низа мањи од 0,
      1. Провери да ли не би требало да будем једнак ј,
        1. Замените вредности индекса арр [и] и арр [ј], и повећајте вредност ј.
  3. Одштампајте низ.

Објашњење за Премештање свих негативних бројева на почетак и позитивних на крај  

Добијамо низ целих бројева, а низ садржи позитивне и негативне елементе. Затражили смо да све негативне елементе померимо улево, а позитивне бројеве удесно. За ово ћемо свап све бројеве, који су позитивни и негативни елементи. Прво пређите низ, а затим проверите негативне бројеве, ако је број негативан, онда ћемо заменити вредности.

Види такође
Минималан број подскупова са различитим елементима

Поставите вредност ј на 0, користиће се за алтернативну вредност за замену. Започет ћемо обилажење низа и проверити да ли је сваки број арр [и] мањи од 0, ако је мањи од 0, значи да смо пронашли негативан број, па ћемо зато проверити да ли оба индекса нису иста, да ли су сви горњи услови тачни, тада ћемо заменити бројеве како ће се заменити арр [и] и арр [ј] и повећати вредност ј. наставићемо са тим преласком све док се не пређу и размене и преуреде све могуће вредности према датом стању.

Проверили смо да је услов да је арр [и] мањи од 0, јер управо слажемо негативне бројеве, сви негативни бројеви након замене биће распоређени лево од низа, а сви остали позитивни бројеви биће аутоматски распоређени десно низа. Након све замене коју смо обавили, само треба да одштампамо низ у коме су извршене операције замене.

Имплементација  

Ц ++ програм за премештање свих негативних бројева на почетак и позитивних на крај

#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

Јава програм за премештање свих негативних бројева на почетак и позитивних на крај

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) јер није потребан додатни простор.

Zakljucak   

Ово је програм за премештање свих негативних бројева на почетак и позитивне на крај са сталним додатним простором у Јави и Ц ++.

Препорука