删除任意数组中相同的元素 , 删除排序后的数组中相同的元素
2017-03-04 00:12
274 查看
A是一个长度为N的整形数组,其中可能包含重复的元素,例如A={1,2,2,3,2,1,3,2},删除数组中相同的元素后得到{1,2,3},
a) 如果数组没有排序,写一个C语言函数,输入参数为数组首地址和长度,删除其中重复的元素,返回删除后的数组的长度。
b) 上述函数的时间复杂度为多少,以删除前的数组长度N表示。
c) 如果数组A已经排好序,设计并写出一个C语言函数完成a)中的工作,要求时间复杂度是O(N) 。
a) 如果数组没有排序,写一个C语言函数,输入参数为数组首地址和长度,删除其中重复的元素,返回删除后的数组的长度。
b) 上述函数的时间复杂度为多少,以删除前的数组长度N表示。
c) 如果数组A已经排好序,设计并写出一个C语言函数完成a)中的工作,要求时间复杂度是O(N) 。
#include<iostream> using namespace std; // a) 删除任意数组中相同的元素 int delete_same_all(int a[], int n) { int i, j, len=n; for(i=0; i<len; ++i) for(j=i+1; j<len; ) if(a[i] == a[j]) a[j]=a[--len]; else ++j; return len; } // c)删除排序后的数组中相同的元素 int delete_sort_same_all(int a[], int n) { int i, k=1; for(i=1; i<n; ++i) { if(a[i-1] != a[i]) { if(i != k) a[k] = a[i]; ++k; } } return k; } //打印数组 void show(int *arr, int n) { int i=0; for(;i<n;i++) cout<<arr[i]<<" "; cout<<endl; } int main() { int A[] = {1,2,2,3,2,1,3,2}; int n, len; n = sizeof(A)/sizeof(A[0]); len = delete_same_all(A, n); show(A, len); int B[] = {1,2,2,2,3,3,3,10,12,77,77,77}; n = sizeof(B)/sizeof(B[0]); len = delete_sort_same_all(B, n); show(B, len); return 0; }
相关文章推荐
- javascript 常见数组操作( 1、数组整体元素修改 2、 数组筛选 3、jquery 元素转数组 4、获取两个数组中相同部分或者不同部分 5、数组去重并倒序排序 6、数组排序 7、数组截取slice 8、数组插入、删除splice(需明确位置) 9、数组遍历 10、jQuery根据元素值删除数组元素的方)
- 网新恒天笔试题,有两个整形数组A和B,请编程去除这两个数组间的交集。若有相同元素,则在相同元素较多的数组中保留它。例如,数组A有三个1,数组B有两个1,程序将删除数组B中的两个1.
- 删除数组中相同元素[等同内置函array_unique]
- 删除已排序数组中的重复元素
- C语言-数组删除相同元素
- 转 :asp教程.net c#数组遍历、排序、删除元素、插入、随机元素 数组遍历
- hdu 3874 Necklace 求数组任意区间和(相同元素只算一次) 树状数组+离线算法
- 删除排序数组中重复的元素
- vector数组中删除相同元素(输入的元素输出时只能出现一次)
- c语言心得-----数组中对元素的操作排序,查找,插入,和删除
- 数组任意位置插入元素,删除特定元素
- 删除与原数组中相同的元素
- 找出两个数组中相同的元素,不排序直接两次循环取出
- 对JSON数组对象排序-有键相同的元素,分组数量不一致,可采用如下的JS进行循环表格输出
- 删除数组中相同的元素 算法复杂度 O(nlogn)
- AS3)实现过滤数组/删除数组中的相同元素(记录6种方法)
- 实验6 数组1 定义一维数组arr,他有5个双精度浮点型元素,任意输入5个后,用冒泡排序法,由大到小排序并输出
- php 计算任意多个结构相同的多维数组的每个元素的平均值
- 微软算法100题14 在排序数组中找到和为指定数的任意两个元素
- 【LeetCode-面试算法经典-Java实现】【026-Remove Duplicates from Sorted Array(删除排序数组中的重复元素)】