Bütün mənfi elementləri massivin bir tərəfinə köçürün

Çətinlik səviyyəsi Asan
Tez-tez soruşulur Capgemini Piyada çox yol qət eləmək MAQ o9 həlləri TCS
Geyim çeşidləyiciBaxılıb 54

Bütün mənfi elementləri massivin bir tərəfinə köçürün – Tutaq ki, sizdə bir var array tam ədədi. Həm mənfi, həm də müsbət rəqəmlərdən ibarətdir və problem ifadəsi bütün mənfi və pozitiv elementləri əlavə boşluq istifadə etmədən sıranın soluna və massivin sağına dəyişdirməyi / köçürməyi xahiş edir. Bu, bütün mənfi rəqəmləri əvvələ, pozitivi isə daimi əlavə boşluqla bitirmək üçün bir həll olacaqdır.

misal

 Input:

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

Çıxış:

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

Explanation: Bütün rəqəmlər sola və bütün müsbət rəqəmlər sağa doğru əyildiyi üçün.

Bütün Neqativ Nömrələri Başlanğıc və Davamlı Əlavə Yerlə Sonlandırmaq üçün Müsbət hərəkət edinPin

Alqoritm

  1. J-i 0-a qoyun.
  2. Dizini 0-dan n-ə qədər keçmək (müstəsna olaraq, n-nin uzunluğu olduğu yerdə).
    1. Bir sıra elementlərinin 0-dan az olub olmadığını yoxlayın,
      1. J-yə bərabər olmamağımı yoxlayın,
        1. Arr [i] və arr [j] indekslərinin dəyərlərini dəyişdirin və j-nin dəyərini artırın.
  3. Dizini çap edin.

Bütün Neqativ Nömrələri Başlanğıca, Sonlara Pozitiv Qoşma üçün İzahat

Bizə tam bir sıra verilir və massiv müsbət və mənfi elementlərdən ibarətdir. Bütün mənfi elementləri sola, müsbət rəqəmləri sağa çevirməyimizi xahiş etdik. Bunun üçün biz gedirik dəyiş-düyüş müsbət və mənfi element olan bütün rəqəmlər. Əvvəlcə cərgəni keçin və sonra mənfi rəqəmləri yoxlayın, əgər rəqəm mənfi olarsa, yalnız dəyərləri dəyişdirməyə gedəcəyik.

J dəyərini 0-a qoyun, dəyişdirmə üçün alternativ dəyər üçün istifadə ediləcək. Dizini gəzməyə başlayacağıq və arr [i] 0-dən az olduğu üçün hər bir rəqəmi yoxlayacağıq, 0-dan azdırsa, mənfi ədədi tapdığımızı bildirir və buna görə indekslərin hər ikisinin eyni olmadığını yoxlayacağıq, yuxarıdakı şərtlərin hamısı doğrudursa, arr [i] və arr [j] dəyişdirilərək rəqəmləri dəyişdirəcəyik və j-nin dəyərini artıracağıq. mümkün olan bütün dəyərlər keçib dəyişdirilənə və verilən şərtə görə yenidən qurulana qədər bu keçidin davam edəcəyini bildiririk.

Arr [i] -nin 0-dan az olduğunu şərtini yoxladıq, çünki mənfi rəqəmləri düzəldirik, dəyişdirildikdən sonra bütün mənfi ədədlər massivin solunda, digər bütün müsbət ədədlər isə avtomatik olaraq sağda yerləşdiriləcəkdir. massivin. Gördüyümüz bütün mübadilə etdikdən sonra dəyişdirmə əməliyyatlarının yerinə yetirildiyi massivi çap etməliyik.

Həyata keçirilməsi

Bütün mənfi nömrələri başlanğıc və sona qədər pozitiv etmək üçün C ++ proqramı

#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

Bütün mənfi elementləri massivin bir tərəfinə köçürmək üçün Java proqramı

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

Bütün mənfi elementləri massivin bir tərəfinə köçürmək üçün mürəkkəblik təhlili

Zamanın mürəkkəbliyi

O (n) hara "N" massivdəki elementlərin sayıdır.

Kosmik Mürəkkəblik

O (1) əlavə yer tələb olunmadığı üçün.

nəticə

Bu, bütün mənfi rəqəmləri əvvələ, müsbətləri isə Java və C ++ da daimi əlavə yerlə bitirmək üçün hərəkət etdirən bir proqramdır.

arayış

Translate »
1