/** * File: time_complexity.kt * Created Time: 2024-01-25 * Author: curtishd (1023632660@qq.com) */ package chapter_computational_complexity.time_complexity /* 定数階 */ fun constant(n: Int): Int { var count = 0 val size = 100000 for (i in 0.. nums[j + 1]) { // nums[j] と nums[j + 1] を交換 val temp = nums[j] nums[j] = nums[j + 1] nums[j + 1] = temp count += 3 // 要素交換には 3 回の単位操作が含まれる } } } return count } /* 指数時間(ループ実装) */ fun exponential(n: Int): Int { var count = 0 var base = 1 // 細胞は各ラウンドで 2 つに分裂し、数列 1, 2, 4, 8, ..., 2^(n-1) を形成する for (i in 0.. 1) { n1 /= 2 count++ } return count } /* 対数時間(再帰実装) */ fun logRecur(n: Int): Int { if (n <= 1) return 0 return logRecur(n / 2) + 1 } /* 線形対数時間 */ fun linearLogRecur(n: Int): Int { if (n <= 1) return 1 var count = linearLogRecur(n / 2) + linearLogRecur(n / 2) for (i in 0..