21xrx.com
2024-11-08 20:23:02 Friday
登录
文章检索 我的文章 写文章
C++数组去重算法实现
2023-07-03 00:35:33 深夜i     --     --
C++ 数组 去重 算法 实现

在C++编程中,经常需要处理数组重复元素的问题。一个常见的问题是如何快速地从一个数组中去除重复的元素,以减少空间复杂度和提高算法效率。下面介绍几种常用的C++数组去重算法实现。

1. 双重循环去重

这是最基本的去重算法,它遍历每个数组元素,然后再将它与其它元素进行比较,判断是否重复。这种算法的时间复杂度为O(n²),当数组规模较大时,效率较低。

2. 快速去重

快速去重算法利用快排的思想,首先将原数组进行排序,然后再遍历一遍,去除重复元素。由于快速排序的时间复杂度为O(nlogn),所以这种算法的时间复杂度也是O(nlogn)。

3.哈希去重

哈希去重算法利用哈希表的特点,将数组元素存储在哈希表中,只有没有被存储过的元素才放入数组。这种算法的时间复杂度为O(n),可以快速高效地完成去重操作。

以下是使用哈希去重的示例代码:


#include <iostream>

#include <unordered_set>

int main() {

  int a[] = 2;

  int len = sizeof(a) / sizeof(a[0]);

  std::unordered_set<int> set;

  for(int i = 0; i < len; ++i) {

    if(set.count(a[i]) == 0) {

      set.insert(a[i]);

    }

  }

  for(auto it = set.begin(); it != set.end(); ++it) {

    std::cout<<(*it)<<" ";

  }

  return 0;

}

这个示例程序中,我们将数组元素插入到哈希表中,重复元素只插入一次。最后遍历哈希表输出去重后的数组。

以上就是三种常用的C++数组去重算法实现。根据实际情况选择合适的算法能够提高程序效率和代码质量。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复