Verinin dizideki yerlerini değiştirmeye çalışmak biraz durumu karmaşıklaştırmış. Onun yerine geçici bir dizi oluşturup bu diziyi istediğin gibi doldurmak olayı daha basit tutacaktır.
Algoritmayı ve kodu açıklamaya çalıştım, senin hazırladığın kodu düzenleyerek ilerledim.
Algoritma:
Input'un ile aynı boyutta geçici, boş bir dizi oluştur.
İki tane index değeri tanımla, bir tanesi dizinin başından ilerleyecek, diğeri ise sonundan.
Input'unu baştan sona sırayla oku.
- Gelen veri tek ise geçici oluşturduğun dizinin başını gösteren index'ine yaz ve bu indexi tutan değeri bir arttır.
- Gelen veri çift ise geçici oluşturduğun dizinin sonunu gösteren index'ine yaz ve bu indexi tutan değeri bir azalt.
Geçici diziyi oluşturduktan sonra baştaki diziye ya da baştaki halini de tutman gerekiyorsa istediğin herhangi bir yere atayabilirsin.
Kod: public static void main(String args[]) throws Exception {
int a [] = {4,8,3,1,18,9,21,20,5,17};
int i;
int size = a.length;
int out[] = new int[size];
int leftIndex = 0; //Arrayin başını tutan index
int rightIndex = size-1; //Arrayin sonunu tutan index
for(i = 0; i<size; i = i+1)
{
if(a[i] % 2 != 0){ //Tek ise
out[leftIndex] = a[i]; //Array'de başa yaz
leftIndex++; //Array'in başını tutan indexi yükselt
}
else{ //Çift ise
out[rightIndex] = a[i]; //Array'de sona yaz
rightIndex--; //Array'in sonunu tutan indexi düşür
}
}
a = out; //Sonucu ata.
//Sonucu yazdır
for(i = 0; i<size; i++)
System.out.println("a["+i+"] = " + a[i]);
}Umarım yardımcı olabilmişimdir.