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.
Mündəricat
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.
Alqoritm
- J-i 0-a qoyun.
- Dizini 0-dan n-ə qədər keçmək (müstəsna olaraq, n-nin uzunluğu olduğu yerdə).
- Bir sıra elementlərinin 0-dan az olub olmadığını yoxlayın,
- J-yə bərabər olmamağımı yoxlayın,
- Arr [i] və arr [j] indekslərinin dəyərlərini dəyişdirin və j-nin dəyərini artırın.
- J-yə bərabər olmamağımı yoxlayın,
- Bir sıra elementlərinin 0-dan az olub olmadığını yoxlayın,
- 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.