删除数组中相同的元素
来源:互联网 发布:淘宝网上买手机可靠吗 编辑:程序博客网 时间:2024/05/21 11:37
问题描述:
给n个int型的整数,存放到数组中,要求删除其中相同的元素。
如:存放1 2 2 3 4,则删除后为1 3 4.
存放 1 2 2 2 3 4 5,则删除后为1 2 3 4 5.
算法分析:
一共n个数据,从第一个起挨个与后面的数据进行比较,若发现相同的元素,则依次向前移动,然后表长减1,随后再次从刚才发现相同元素的位置开始,再次与后面的数据进行比较。
重复以上操作,直到比较完毕。难度在于对循环变量指向的控制。代码如下:
#include<stdio.h>#define N 100int main(){ int l; int i, j, k; int a[N]; scanf("%d",&l); for(i=0;i<l;i++) scanf("%d",&a[i]); for(i = 0; i < l;) { for(j = i+1; j <l;)//对后面每个元素比较,去重。 { if(a[j] == a[i])//发现重复元素。 { for(k = j+1; k<l; k ++)//依次前移一位。 a[k-1] = a[k]; l--;//总长度减一。 } else j++; } i++; } for(i=0;i<l;i++) printf("%-2d",a[i]); return 0; }
算法二:
算法二来自:http://blog.csdn.net/y396397735/article/details/50484807
再建立一个新的数组,一共n个数据,对于每一个数据,建立一个与之对应的flag,flag全部初始化为0,即都没有出现过。随后依次遍历数组,当为0时,该数据加入到新的数组中,随后这个数据标记为1,若不为0,则直接跳到下一个数据。此算法用数组的嵌套来完成。
#include<stdlib.h>#include<stdio.h>#define N 100int delete_elem(int arr[], int new_arr[]){ int i = 0, new_arr_len = 0; int flag[N] = { 0 };//对每个元素做一个初始标记 for ( i = 0; i < 9; i++) { if (flag[arr[i]] == 0) //重点 { new_arr[new_arr_len++] = arr[i]; flag[arr[i]] = 1;//出现过则标记属性设为1 } } return new_arr_len;}void main(){ int i,arr[N]; int new_arr[N]; int arr_len = 9;//输入number的个数 int new_arr_len; printf("input 9 numbers:\n"); for ( i = 0; i < arr_len; i++) { scanf("%d", &arr[i]); } new_arr_len = delete_elem(arr, new_arr); printf("\n"); printf("new array is :\n"); for (i = 0; i < new_arr_len; i++) { printf("%d ", new_arr[i]); } printf("\n"); system("pause");}
0 0
- 删除数组中相同的元素
- 删除数组中相同的元素
- 删除任意数组中相同的元素 , 删除排序后的数组中相同的元素
- 根据指定的元素删除数组中相同的元素
- 删除与原数组中相同的元素
- 关于删除数组中相同元素的一个小技巧
- PHP函数之删除两个数组中相同的元素
- vector数组中删除相同元素(输入的元素输出时只能出现一次)
- 删除串中相同的元素
- [python]删除列表中相同的元素
- 删除字符串中相同的元素
- 查找数组中相同的元素
- 两个数组中找出相同的元素
- 查询数组中相同元素的个数
- 找出两个数组中相同的元素
- 数组中去掉相同的元素, 排序
- JavaShowAlgorithm-找出数组中相同的元素
- 删除数组中相同元素[等同内置函array_unique]
- 史上最详细的iOS之事件的传递和响应机制-原理篇
- java零基础的外行人
- Phoenix在建表是报出java.lang.ArrayIndexOutOfBoundsException的处理方法
- struct device
- CSS神奇的代码-背景透明内容不透明
- 删除数组中相同的元素
- 快速排序
- socket udp
- 深入浅出RxJava_07[多线程&辅助操作(完)]
- Java面向对象三大特性归纳
- LAMP编译安装
- 关于使用引用类型所引起的错误
- 全排列(非递归)
- 2017移动互联网寒冬(Android)求职随感