笔试时曾经遇到过的一道题,当时没有好的想法。
今天无意中想起,于是把自己的一种解决方法记下来。
1. main.cpp
/**
* 问题描述:
* 删除数组内重复的数据
*
* 一个解决方法:
* 可以先将数组排序,然后再删除
* 如一个已经排好序的整数数组:1, 1, 2, 2, 3
*/
#include <iostream>
using std::cout;
using std::endl;
using std::swap;
/**
* 打印数组
*/
template<class T>
void printArray(const T array[], const int size);
/**
* 将数组排序,选择排序
*/
template<class T>
void sort(T array[], const int size);
/**
* 对已经排好序的数据
* 将数组内重复的数据删除
* @return int 删除重复数据后数组的大小
*/
template<class T>
int deleteRepeatedData(T array[], const int size);
int main(int argc, char *argv[]) {
int array[] = {9, 1, 1, 8, 2, 3, 3, 4, 3, 3, 5, 9, 7, 8, 2, 6, 9, 1, 9, 0, 9, 0};
int size = sizeof(array) / sizeof(int);
cout<<"A initial int array: "<<endl;
printArray(array, size);
cout<<"\nAfter sort: "<<endl;
sort(array, size);
printArray(array, size);
cout<<"\nAfter delete repeated data: "<<endl;
size = deleteRepeatedData(array, size);
printArray(array, size);
}
/**
* 打印数组
*/
template<class T>
void printArray(const T array[], const int size) {
for (int i=0; i<size-1; i++) {
cout<<array[i]<<", ";
}
cout<<array[size-1]<<endl;
}
/**
* 将数组排序,选择排序
*/
template<class T>
void sort(T array[], const int size) {
for (int i=0; i<size-1; i++) {
int min = i;
for (int j=i+1; j<size; j++) {
if (array[min] > array[j]) {
min = j;
}
}
if (min != i) {
swap(array[i], array[min]);
}
}
}
/**
* 对已经排好序的数据
* 将数组内重复的数据删除
* @return int 删除重复数据后数组的大小
*/
template<class T>
int deleteRepeatedData(T array[], const int size) {
int j = 0;
for (int i=0; i<size-1; i++) {
while (array[i] == array[i+1]) {
i++;
}
array[j++] = array[i];
}
return j;
}
2. main.cpp download
注:发表于: 2008-11-10 ,修改于: 2009-05-16 13:24,chinaunix
分享到:
相关推荐
总之,“LabVIEW 删除数组中重复元素实例”这个主题涵盖的是如何在图形化编程环境下有效地处理数组数据,确保其唯一性。通过理解数组操作的基本原理,结合LabVIEW提供的工具和函数,我们可以创建出高效且易于维护的...
话不多说,下面就跟着小编来看下利用jquery实现删除数组中重复元素的具体思路吧 首先定义如下数组: var arr=[0,2,3,5,6,9,2]; 我们可以看到数组中存在重复元素’2′; 最后通过jquery筛选应该得到[0,2,3,5,6,9]; ok...
Matlab 中去掉数组中重复的值 Matlab 是一个功能强大的数学和技术计算软件,对于数据处理和分析有着广泛的应用。...通过这两种方法,我们可以轻松地删除重复数据,避免数据处理中的错误和不一致性。
这是一个用C++编的删除数组中的重复元素的程序~
通过上述分析,我们可以看出,`unique_arr`函数提供了一种有效的方法来处理二维数组中的重复数据,同时提供了灵活性,允许用户选择是否保留键名。这对于数据预处理、数据分析以及数据库操作等场景非常有用。然而,...
总之,VB.NET中删除数组重复元素是一个常见的需求,可以通过多种方式实现,关键在于选择合适的方法并优化性能。提供的源码和可执行程序是一个很好的学习和实践起点,帮助开发者理解如何在实际项目中解决此类问题。
this vi is capble to remove the duplicated elements in the labview array.
删除数组重复成员的过程通常涉及遍历数组,比较相邻元素,如果发现有重复,就将其删除。但在易语言中,我们不能直接删除数组中的某个元素,因为易语言的数组是静态的,一旦定义,大小就不能改变。因此,我们需要创建...
java删除数组或是集合中重复的数据
删除数组重复成员的方法有很多种,一种常见的是使用双重循环,外层循环遍历数组,内层循环检查当前元素是否与后面元素重复,如果重复则删除后面的元素。但这种方法可能会导致数组长度变化,处理起来较为复杂。另一种...
首先,数组去重复是编程中常见的数据处理任务,目的是从包含多个元素的数组中删除重复的元素,保持数组中每个元素的唯一性。在易语言中,实现这个功能通常需要遍历数组,比较每个元素与已处理过的元素是否相同,若...
总的来说,Java中删除整型数组重复元素的核心在于选择合适的数据结构(如HashSet)和适当的转换方法。通过这种方式,我们可以有效地处理数组中的重复值,提高数据处理的效率和准确性。对于初学者,掌握这些基础知识...
本教程将详细讲解如何在LabVIEW中使用一维数组删除重复项,以确保数组中的元素唯一。 首先,我们需要理解LabVIEW的基本操作。LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一种图形化编程语言...
本文将详细讲解如何在易语言中实现删除数组重复成员的功能。 易语言是一款国产的、以中文编程为特色的编程环境,它旨在降低编程难度,让编程更加直观易懂。易语言提供了丰富的内置函数和结构,使得处理数组变得简单...
这个“易语言删除数组重复成员源码.rar”文件应该包含了实现这一功能的源代码。 数组是存储一系列数据的数据结构,可以是数字、字符串或其他类型。在易语言中,数组分为一维数组、二维数组和多维数组。当处理的数组...
这种方法不仅代码更简洁,而且执行效率也很高,是目前移除数组重复元素推荐的做法。 总结一下,在学习和使用JavaScript进行数组去重时,可以根据具体的应用场景和ES版本选择合适的去重方法。对于ES6之前的版本,...
外层循环遍历原数组,内层循环检查当前元素是否已经存在于新数组中。如果不存在,就将其添加到新数组中。这种方法的时间复杂度较高,为O(n^2),因为它需要对每个元素进行一次完整的遍历检查。 ```javascript var ...
在实际应用中,我们经常需要从二维数组中删除重复的元素,以便提高数据的效率和简洁性。 在删除二维数组中重复的元素时,我们可以使用多种方法。下面,我们将介绍两种常见的方法:使用for循环和使用filter()方法。 ...