Tək və Tək nömrələri elə düzün ki, Təklər cütdən sonra gəlsin

Giriş: 7 2 4 9 10 11 13 27
Çıxış: 10 2 4 9 7 11 13 27

Alqoritm

ZAMAN KOMPLEKSİYASI: O (N)

Məkan Kompleksliyi: O (1)

  1. Sadəcə olaraq başlanğıc indeksində və son endeksində sola və sağa adlanan iki dəyişəni işə salın.
  2. Sola qədər döngə sağdan daha azdır və edin
  • Sol indeksdəki element təkdirsə, indeks sağdakı elementin tək və ya cüt olduğunu yoxlayın.
  • İndeks sağındakı element təkdirsə, hər hansı bir cüt say və sağ indeks sol indeksdən böyük olana qədər sağ dəyişəni azaldın.
  • Başqa elementi sol və sağ indeksdə dəyişdirin.
  • Döngə sola bərabər olduqda sona çatır.

#include <bits/stdc++.h>
using namespace std;

int main()
{	
	int arr[] = {4,1,8,9,11,3,77,2};
	int N = sizeof(arr)/sizeof(arr[0]);
			
	int left = 0, right =N-1; //left at start index and right at end index
	while(left < right) //till left index is less than right index
	{
		if(arr[left]%2) //if array at left index is odd
		{
			while((arr[right]%2 ==1) and right > left)	//then loop backwards if element at right index is odd
				right --;
			swap(arr[left++],arr[right--]);//swap the even and odd elements to bring even element at front and odd at back.
		}
		else 
		left++;
	}
	
	for(int i=0;i<N;i++)
		cout<<arr[i]<<" ";
	return 0;
}

Yoxla

Translate »