Avatar
func mergeSort<T: Comparable>(_ array: [T]) async -> [T] { func f(_ array: ArraySlice<T>) async -> [T] { guard array.count > 1 else { return Array(array) } let middleIndex = array.startIndex + array.count / 2 async let leftArray = await f(array[array.startIndex..<middleIndex]) async let rightArray = await f(array[middleIndex..<array.endIndex]) return merge(await leftArray, await rightArray) } return await f(array[...]) }
2:27 AM
こうすれば元の配列はコピーされない