`
YuHuang.Neil
  • 浏览: 188760 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
问题:编写一个程序实现筛除数组中重复元素功能。

算法思路:基于简单的想法,先把数组排序,然后扫描整个数组跳过重复的元素。算法的效率取决于排序算法的效率。

算法实现:


//
//  main.cpp
//  MyProjectForCPP
//
//  Created by labuser on 11/2/11.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#include <iostream>

void sort(int[],int);

void unique(int x[],int n,int *number){
    int i;
    
    sort(x, n);
    *number=1;
    
    for(i=1;i<n;++i){
        if (x[i]!=x[i-1]) {
            x[(*number)++] = x[i];
        }
    }
}

void sort(int x[],int n){
    int i,j,temp;
    
    for (i=0; i<n; ++i) {
        
        for (j=i+1; j<n; ++j) {
            if (x[i]>x[j]) {
                temp=x[i];
                x[i]=x[j];
                x[j]=temp;
            }
        }
    }
}

int main (int argc, const char * argv[])
{
    int x[] = {100, 37, 100, 37, 15, 111,
        37, 15, 111, 98, 100,98 };
    int n = sizeof(x)/sizeof(int);
    int number;
    int i;
    
    printf("\nElement Uniquness Program");
    printf("\n=========================");
    printf("\n\nOriginal Array  :");
    
    for (i=0; i<n; i++) {
        printf("%4d",x[i]);
    }
    
    unique(x, n, &number);
    printf("\n\nProcessed Array :");
    
    for (i=0; i<number; i++) {
        printf("%4d",x[i]);
    }
    
    printf("\n\n");
    
    return 0;
}



运行结果:
Element Uniquness Program
=========================

Original Array  : 100  37 100  37  15 111  37  15 111  98 100  98

Processed Array :  15  37  98 100 111

Program ended with exit code: 0

分享到:
评论

相关推荐

    C语言数组编程题及解答.doc

    1. 初始化一个长度为100的数组,数组中的每个元素表示对应的自然数。 2. 从数组的第二个元素(即2)开始遍历: - 如果当前元素不为0,则保留该数作为素数; - 将该数之后所有能够被它整除的数标记为0,表示这些数...

    计算机程序设计基础——第四讲PPT课件.pptx

    非素数可以通过其因子被筛除,即设置对应的数组元素为1,表示已被处理。通过这种方式,可以有效地找出一定范围内的所有素数。 总的来说,这个第四讲的PPT课件深入浅出地介绍了数组的基本概念、定义、使用方法以及...

    visual basic常用算法大全

    - **冒泡排序**:这是一种简单的排序算法,通过重复遍历数组比较相邻元素并交换位置来实现排序。在VB中,可以使用For和If语句实现。 - **选择排序**:每次从未排序的部分找到最小(或最大)元素,然后将其与第一个...

    论文研究-胶囊内窥镜冗余图像数据自动筛除方法.pdf

    针对胶囊内窥镜检查的海量图像数据, 提出基于归一化互信息量及归一化互相关系数的冗余图像数据筛除方法。将图像在HSV色彩空间量化聚类; 然后计算相邻图像的相似度系数, 最后根据相似筛除比例进行迭代筛除。针对49例...

    艾托色尼法验证素数

    1. 创建一个布尔数组,长度为待检查的数n,所有元素初始化为`true`。数组中的索引代表数字,如数组下标i对应数字i。 2. 从2开始遍历数组,如果2是素数,就标记2的倍数(即下标为2, 4, 6, ...)为`false`,因为它们...

    c语言经典笔试题(附带解析过程)

    - **二分查找**:通过对数组的中间元素与目标值进行比较,逐步缩小搜索范围,直至找到目标或确定不存在于数组中。 **示例代码分析:** ```c int binary_search(int *arr, int key, int size) { int mid; int low ...

    一种新型种子生产输送振动筛除杂装置的制作方法.docx

    然而,传统种子生产中使用的振动筛除杂设备往往存在效率低下、灰尘处理不便等问题,这些问题制约了种子生产的质量和效率。为了解决这些不足,一种新型的种子生产输送振动筛除杂装置应运而生。本文将详细介绍该装置的...

    不同存储方式上求素数的

    - 从数组中选择一个素数`p`,删除所有能被`p`整除的数。 - 重复上述步骤,直到所有素数都被筛选出来。 2. **特点**: - 相比布尔数组方法,这种方法更直观,但效率较低。 3. **适用场景**: - 对于数据规模不是...

    蓝桥杯历届试题 算法分析+递归算法、 动态规划+构图、 递归算法、 度的计算+最短路径、 深度优先遍历+构图, 最小生成树+筛除

    蓝桥杯历届试题 算法分析+递归算法、 动态规划+构图、 递归算法、 度的计算+最短路径、 深度优先遍历+构图, 最小生成树+筛除  格子刷油漆 ( 递归算法、 动态规划)  网络寻路 ( 构图、 递归算法、 度的计算)...

    算法 数据结构函数实现模板

    在给定代码片段中,通过定义`bp`数组来标记是否为素数,`p`数组存储找到的素数,`phi`数组存储每个数的欧拉函数值,`divNum`数组存储每个数的因数个数,`e`数组存储每个数的最小素因子次数。具体实现步骤如下: 1. ...

    2020西南交通大学数据结构实验报告单向链表算法练习.doxc

    1. **插入元素**:在单向链表中插入元素需要找到目标位置的前一个节点,然后创建一个新的节点,将新节点的数据设置为要插入的元素,同时更新前后节点的链接关系。插入位置的有效范围是0到当前线性表长度n,如果输入...

    解决C#广播问题

    接收的数据被存储在`data`数组中,通过解析可以获取具体的广播内容。 4. **关闭Socket**: ```csharp sock.Close(); ``` 完成接收后应关闭Socket。 #### 注意事项 1. **广播的应用**:广播通常用于客户端向...

    筛选算法实现

    筛选法的基本思想是在一个包含所有解的集合中,通过删除不符合条件的元素来获得所需结果。这种方法类似于用筛子筛除杂质的过程。例如,在求解素数的问题中,可以先假设所有数字都是素数,然后逐步剔除非素数,最终...

    人工神经网络在激光诱导击穿光谱数据分析中的应用进展.pdf

    特征提取是指从 LIBS 光谱数据中提取有用的信息,例如元素的存在、浓度等信息。模式识别是指根据 LIBS 光谱数据对样品的分类、识别等。回归分析是指根据 LIBS 光谱数据对样品的浓度、组成等进行预测。 人工神经网络...

    Python开发基于边界跟踪算法的可逆水印可视化项目源码+项目说明+数据.zip

    传出以一个列表,其中每个元素为`numpy`三维数组,分别为长、宽、RGBA值,类型为`uint8`,A。其代表若干个已切分的块,以可嵌入信息从大到小排列(若相同则以边界最左一列的最上一点坐标作为特征,以其横坐标从大到...

    山东大学07年计算机复试上机题与笔试真题

    1. **初始化**:创建一个大小为n的布尔数组,将所有元素标记为true,表示每个数都可能是质数。 2. **筛除非质数**: - 从最小的质数2开始,将其所有倍数标记为false。 - 移动到下一个未被标记为false的数,重复...

    筛除异常数据matlab代码-HPO2GO:HPO和GO术语之间的映射

    筛除异常数据matlab代码HPO2GO v1.1 人类表型本体 (HPO) 和基因本体 (GO) 术语之间的映射,用于预测基因/蛋白质 - 功能 - 表型 - 疾病关联。 引文 如果您发现 HPO2GO 有用,请考虑引用此出版物: 多安,T.(2018 年...

    c语言实验,埃氏筛法与欧拉筛法

    具体到C语言的实现,我们可以设置一个布尔型数组标记每个数是否为质数,然后通过双层循环(埃氏筛法)或单层循环(欧拉筛法)来完成筛选。输出时,我们按照题目要求,将每个质数输出到新的一行,并在两个"===="之间...

Global site tag (gtag.js) - Google Analytics