Swap nilai tanpa variabel temporary

Swap (a,b)

{

a=a-b;

b=b+a;

a=b-a;

}

14 Responses

  1. atau :

    Swap (a,b)

    {

    a=a+b;

    b=a-b;

    a=a-b;

    }

    “Banyak jalan menuju ke Roma”
    hehehe.. ^_^

  2. kalo yang diswap sebuah Object bisa ga?

  3. @leoganda :
    Klo mao swap object dengan cara seperti diatas, menurut saya tidak bisa.
    kayaknya klo untuk swap object kita perlu object temporary lagi (object harus dari class yang sama).

    Memangnya kasus anda kayak gimana?

  4. Menurut saran saya, swap terbaik adalah yang seperti berikut:

    Swap(a,b)
    {
    c = a;
    a = b;
    b = c;
    }

    Swap menggunakan operasi (+) dan (-) tidaklah aman untuk digunakan ^_^.

  5. @Timo :
    Oh,,,,gitu.
    Mungkin Timo bisa kasih contoh kasus.^_^

  6. @Ng Elyi Junaidi:
    Ngga jadi deh, tadinya saya pikir hasil tukarnya akan salah kalau saya tukar 2 bilangan yang angkanya besar ^^.

  7. a ^= b ^= a ^= b;

  8. swap a+b itu membuat range a dan b yang bisa diterima hanya setengah dari range aslinya.

    2×10^9 + 2×10^9 overflow untuk integer, padahal kalo cuma ngeswap mestinya gak ada cerita overflow segala.

    -Kurniady

  9. @Kurniady :
    maksudnya pas di tambah bakalan terjadi overflow jika nilai yang di tambah lebih dari batas daya tampungnya y? tapi kan dibagian pertama sudah dikurangin nilainya.
    mungkin bisa dikasih contoh.
    thanks y,,

  10. @ng elyi

    coba bisa liat di blogkuw… udah pernh ku post sebelumnya ditambah kemungkinan2 lainnya :) silahkan di cek di

    http://felix-sally.imoetz-a.biz/blog-felix/2008/05/13/algorithm-swap-two-values/

    :)

  11. @NG Elyi

    kalo si kurniady mungkin kasi contoh swap nilai untuk yang pertama di tambah dlu (a+b)

    tapi kalo untuk yang (a-b) jangan lupa ttp akan terjadi overflow, kalo a = -2 x 10^9 dan b nya 2 x 10^9

    -a – b maka sama saja dengan a+b tapi versi min :) -2^31

  12. @ Felix J :
    iya ya.
    untuk amannya pake yang variable temporary aja y.he,,,,

  13. @Ng Elyi
    yup… seperti kata kk Timo… emang cara paling aman adalah dengan variabel temporary… yang penting ttp tau aja kalo walau dikurang atau di tambah dl ttp akan overflow ketika kondisinya terpenuhi… (a+b) > 2^31 – 1 dan -(a+b) < -2^31 :)

  14. Klo dari kasus di atas kan yg di swap cuma angka, padahal kan bnyak macem tipe data. Iya lebih bagus pake temporary, ga perlu mikir overflow ato kaga, dan kemungkinan error bisa lebih minim.

Leave a Reply