删除数组中重复的元素

文章目录

  • 数组——删除数组中重复的元素

数组——删除数组中重复的元素

最近开始做课设,发现了不少问题,其中之一就是如何去删除数组中重复的元素,当我第一次遇到这个问题就不知所措了

通过查找资料,总结以下的学习方法。

  1. 创建数组:
	//创建数组
	int m_Array[10] = { 1,1,2,2,3,3,4,4,5,5 };
  1. 计算数组长度:
	//计算数组长度
	int len = sizeof(m_Array) / sizeof(int);
  1. 输出第一个数据
	//输出第一个数据
	cout << m_Array[0] << endl;
  1. 具体函数实现:
	//函数实现
	for (int i = 0; i < len; i++) {                     //每次循环判断m_Array[i]的值是否重复
		for (int j = i + 1; j < len;) {                 //暂时不给出循环条件,若出现重复数据,
			if (m_Array[i] = m_Array[j]) {              //判断某一个数据和后面的数据是否相同
				for (int m = j; m < len - 1; m++) {     //若相同,将后面的数据向前移动,覆盖前面的数据,则数组长度减小,即长度变为len - 1
					m_Array[m] = m_Array[m + 1];         
				}
				len--;                                  //循环条件,数据长度减一
			}
			else {                                      //如果某一个数据与后面的数据不同,则这个数据与后面数据的后面一个数据比较是否相同
				cout << m_Array[j] << endl;
				j++;
			}
		}

注意:在第二个 for 循环中,注意并不需要写循环条件。因为我们需要删除数组中重复的元素。那么,随着数据的删除吗,数组的长度也在发生着变化,越来越小。如果某一个元素和其后面的一个元素的数据相同,则将后面一个数组的数据赋值给该数组,数组的长度减一,因此执行 len-- 的代码。如果这个数组的数据与后面元素的数据不同,则输出这个数据;但是需要注意的是,数据是从第二个数据开始输出的,因此需要在一开始就输出第一个数组的数据。同时,此时在第二个for循环中遍历后面的数组元素,经过第一遍第二个 for 循环遍历后,m_Array数组元素如下:

int m_Array[9] = {1,2,2,3,3,4,4,5,5};

此时第二次进入第一个 for 循环, i = 1 ,第二次进入第二个 for 循环;此时j = i + 1 = 2;进入if判断语句,即判断此时的m_Array[1] 和m_Array[2]是否相等,相等则利用m_Array[2]的值覆盖m_Array[1],同时 len-- ,此时数组的数据如下:

int m_Array[8] = {1,2,3,3,4,4,5,5};

直到最后数组数据如下:

int m_Array[5] = {1,2,3,4,5};

最终实现了函数的目的。

个人心得:突然发现自己的编码能力很一般,甚至于说,不如大多数人,但是这是每一个人的必经之路,需要时间的积累,希望大家和我一样,在这一条道路上越走越远,永不言弃!!!

一个人的必经之路,需要时间的积累,希望大家和我一样,在这一条道路上越走越远,永不言弃!!!

你可能感兴趣的:(排序算法,算法,数组)