Swap Nedir? Örnek Üzerinde Anlatım
Öncelikle bir dizimiz olsun. Bu dizimizin indislerine de sırası ile 5 eleman atanmış olsun.
Elemanlarımız; 23 42 11 25 98 57
yani dizimizin indis karşılığı şöyle oluyor;
dizi[0] = 23;
dizi[1] = 42;
dizi[2] = 11;
dizi[3] = 25;
dizi[4] = 98;
dizi[5] = 57;
şimdi dizimizin 3. indisindeki değeri ile 5. indisindeki değerinin yerlerini değiştirmek isteyelim. yani yeni sistemde dizi[3] = 57 olurken dizi[5] = 25 olacak. Peki arkadaş biz bu işi kodla nasıl yapacağız? yani çok amelece bir yaklaşımda bulunsak;
dizi[3] = dizi[5],
desek dizi[3] değerine 57 sayısını atadık eyvallah. Ancak dizi[5] değerine dizi[3]'ün ilk değerini nasıl atayacağız? dizi[3] değeri artık gitti, değişti o, 57 oldu :) onu atasak dizi[5] değeri yine 57 olacak. hiçbir işe yaramayacak. İşte bu yüzden swap algoritması oluşturuldu.
Swap Algoritması
Eğer değerin birini kaybetmek istemiyorsak bir tane fazladan değişken oluştururuz. O değişkende o değeri tutarız ki kaybolmasın. ne mi demek istiyorum? Bakın aynı örnek üzerinden gidiyorum. dizi[3] ile dizi[5] değerlerinin yerlerini değiştireceğiz. Bu yüzden bir tane elemanı elimde tutuyorum. Temp diye bir değişken oluşturuyorum.
int temp = dizi[3];
dizi[3] = dizi[5];
dizi[5] = temp;
Hah işte swap tam olarak bu :) bir tane değerimizi elimizde tutmazsak o değişkene yeni değer atadığımızda mevcut değer kaybolacak. Bu yüzden swap işlemini yapamayacağız. Swap algoritmasının kritik noktası temp değişkeni.
Swap Fonksiyonu C Kodu
void swap(int dizi[], int ilkdeger, int ikincideger)
{
int temp = dizi[ilkdeger];
dizi[ilkdeger] = dizi[ikincideger];
dizi[ikincideger] = temp;
}
bakın işte tertemiz bir kod. Bu kodla dizideki iki farklı indise swap operasyonu yapabilirsiniz. Fonksiyonu nasıl kullanırım derseniz;
swap(diziniz, indis1, indis2);
bu değerleri girdiğiniz zaman indis1'in değeri indis2'nin değeri olurken, indis2'nin değeri indis1 olur.