Kamis, 09 Januari 2020

Cara menemukan angka yang lompat dari angka yang berurutan

Jadi ceritanya begindang....
Ane dah bikin program penjualan dan masing - masing marketing punya hak akses untuk membuat konfirmasi permintaan,
So karena marketingnya banyak, dan ada user yang bikin terus hapus so jadinya counter penomoran jadi lompat lompat dan gak urut.

Nah saat ada marketing yang bikin konfirmasi trus kemudian gak jadi dan di hapus so bikin ada nomor yang bolong dan lompat,
untuk mengatasinya bikin script ini nih di PHP dan codeignitternya

untuk pakai bahasa lainnya misal c++, java, python, c#
kunjungi link ini ya...

https://www.geeksforgeeks.org/find-missing-element-in-a-sorted-array-of-consecutive-numbers/

okkay untuk yang di PHP berikut scriptnya
okkay pertama di controller helper bikin ini nih

 $arr1 =  {1,2,3,5,6,7,8};
 $n = count($arr1);
$xx = findMissing($arr2, $n);

dan di helper codeignitter bikin function ini

function findMissing($arr, $n)
{
    $l = 0;
    $h = $n - 1;
    while ($h > $l) {
        $mid = floor($l + ($h - $l) / 2);
        // Check if middle element is consistent 
        if ($arr[$mid] - $mid == $arr[0]) {
            // No inconsistency till middle elements 
            // When missing element is just after 
            // the middle element 
            if ($arr[$mid + 1] - $arr[$mid] > 1)
                return $arr[$mid] + 1;
            else {
                // Move right 
                $l = $mid + 1;
            }
        } else {
            // Inconsistency found 
            // When missing element is just before 
            // the middle element 
            if ($arr[$mid] - $arr[$mid - 1] > 1)
                return $arr[$mid] - 1;
            else {
                // Move left 
                $h = $mid - 1;
            }
        }
    }
    // No missing element found 
    return 0;
}


So kalau $xx di var dump muncul deh hasilnya 4
sekian...

Tidak ada komentar:

Posting Komentar