📜  使用计数排序在数组中查找值为 1 到 N 的重复项(1)

📅  最后修改于: 2023-12-03 15:22:26.648000             🧑  作者: Mango

使用计数排序在数组中查找值为 1 到 N 的重复项

计数排序是一种非比较排序算法,适用于数组中元素取值范围不大,且数字取值范围已知的情况下。本文将介绍如何使用计数排序算法在数组中查找值为 1 到 N 的重复项。

实现步骤
  1. 定义一个计数数组 count[],长度为 N,其中 count[i] 表示元素值为 i 的个数。
  2. 遍历整个数组,把每个元素的个数都统计到 count[] 数组对应的位置上。
  3. 遍历计数数组 count[],如果 count[i] 的值大于 1,则说明元素值为 i 的元素在数组中存在重复,输出其索引即可。
代码实现

下面是使用 Python 实现计数排序查找值为 1 到 N 的重复项的代码:

def find_duplicates(arr):
    n = len(arr)
    count = [0] * (n + 1)

    for i in range(n):
        count[arr[i]] += 1

    duplicates = []
    for i in range(1, n + 1):
        if count[i] > 1:
            duplicates.append(i)

    return duplicates
使用示例
arr = [1, 2, 3, 4, 5, 6, 3, 7, 8, 9, 7]
duplicates = find_duplicates(arr)
print(duplicates) # [3, 7]

上述示例中,原数组中出现了值为 3 和 7 的重复元素,使用计数排序算法查找到了这些重复项,返回结果为 [3, 7]。