• 长度为n,范围为0~n-1,若无重复数字,且按序排列,则必有value=index;若存在重复数字时,当一个数字占据index,则重复元素必然会产生冲突
  • 遍历数组
  • 如果vlaue!=index 说明value没有在正确的位置上,应将其交换到正确的位置上
  • 如果value == arr[value], 说明该位置上已存在value,该元素为重复元素,结束返回true
while (index < n)
{
    if (arr[index] != index && arr[index] == arr[arr[index]])
        return true;
    else
    {
        /* 当arr[index] == index时不需要交换 */
        swap(arr[index], arr[arr[index]]);
    }
    ++index;
}
return false;