Kami menghitung jumlah elemen array yang dibaca dan ditulis. Untuk melakukan bubble sort, Anda perlu akses (penulisan awal hingga akhir, kemudian, dalam kasus terburuk, dua membaca dan dua menulis untuk melakukan n swap). Untuk melakukan pencarian biner, kita membutuhkan 2 log n + 2 n + 1 ( 2 log n untuk pencarian biner, kemudian, dalam kasus terburuk, 2 n untuk menggeser elemen array ke kanan, lalu 1 untuk menulis elemen array ke posisi yang tepat).1+4nn2logn+2n+12logn2n
Jadi kedua metode memiliki kompleksitas yang sama untuk implementasi array, tetapi metode pencarian biner membutuhkan lebih sedikit akses array dalam jangka panjang ... tanpa gejala, setengah dari jumlah tersebut. Ada faktor-faktor lain yang berperan, secara alami.
Sebenarnya, Anda bisa menggunakan implementasi yang lebih baik dan hanya menghitung akses array aktual (bukan akses ke elemen yang akan dimasukkan). Anda bisa melakukan untuk bubble sort, dan log n + 2 n + 1 untuk pencarian biner ... jadi jika akses mendaftar / cache murah dan akses array mahal, mencari dari akhir dan pergeseran sepanjang jalan (cerdas semacam gelembung untuk penyisipan) bisa lebih baik, meskipun tidak asimtotik.2n+1logn+2n+1
Solusi yang lebih baik mungkin melibatkan penggunaan struktur data yang berbeda. Array memberi Anda O (1) akses (akses acak), tetapi penyisipan dan penghapusan mungkin dikenakan biaya. Tabel hash dapat memiliki penyisipan & penghapusan O (1), akan dikenakan biaya. Opsi lain termasuk BST dan heap, dll. Ini bisa bermanfaat mengingat kebutuhan penggunaan aplikasi Anda untuk penyisipan, penghapusan dan akses, dan memilih struktur yang lebih khusus.
Perhatikan juga bahwa jika Anda ingin menambahkan elemen ke array yang diurutkan dari elemen n , ide yang baik mungkin untuk mengurutkan item m secara efisien , kemudian menggabungkan dua array; juga, array yang diurutkan dapat dibangun secara efisien menggunakan misal heaps (heap sort).mnm