Saya memiliki algoritma ikuti yang menemukan duplikat dan menghapusnya:
public static int numDuplicatesB(int[] arr) {
Sort.mergesort(arr);
int numDups = 0;
for (int i = 1; i < arr.length; i++) {
if (arr[i] == arr[i - 1]) {
numDups++;
} }
return numDups;
}
Saya mencoba untuk menemukan kompleksitas waktu kasus terburuk ini. Saya tahu mergesort adalah nlog(n)
, dan dalam loop saya, saya mengulangi seluruh set data sehingga akan dihitung sebagai n
. Saya tidak yakin apa yang harus dilakukan dengan angka-angka ini. Haruskah saya menjumlahkannya bersama? Jika saya melakukan itu, bagaimana saya melakukannya?