Kompleksitas akan tergantung pada regex yang Anda gunakan untuk melakukan pemisahan. (Ya, argumen yang Anda berikan ke String.split (...) adalah regex!)
Sebagai contoh Anda, itu akan menjadi di O(N)mana Njumlah karakter dalam String input.
Algoritma split cukup mudah, berdasarkan implementasi regex yang ada. Deskripsi tingkat tinggi adalah:
- Kompilasi regex dan buat korek api
- Iterate atas string:
- Gunakan
Matcher.find(...)untuk menemukan batas kata berikutnya
- Gunakan String.substring untuk mengekstrak kata
- Tambahkan kata ke daftar string
- Konversi daftar string ke array string.
Pencarian untuk jeda antara "kata" akan menjadi O(N)atau lebih kompleks, tergantung pada regex ( findpanggilan). Konstruksi daftar, susunan hasil, dan substring akan menjadi O(N)yang terburuk.
Detail tepatnya ada di kode sumber, yang dapat Anda temukan menggunakan Google. (Cari "java.lang.String" source, pilih satu dan kemudian telusuri ke versi Java yang Anda minati. Atau cari file dalam kode sumber file ZIP yang termasuk dalam instalasi JDK Anda)