`
YuHuang.Neil
  • 浏览: 181335 次
  • 性别: 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

分享到:
评论

相关推荐

    不同煤级的微量元素酸脱除率初探

    通过对山西8号煤层5个不同煤级的微量元素富集程度和元素酸脱除率的统计对比,发现,受岩浆热力烘烤作用影响的煤的变质程度对煤中微量元素的富集个数、富集程度和赋存形态影响甚大。总的趋势是,煤变质程度愈大,富集元素...

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

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

    利用Excel高级筛选选择不重复的记录.rar

    利用Excel高级筛选选择不重复的记录.rar,如示例的数据列表中存在着大量的重复数据。使用高级筛选的“选择不重复的记录”功能,可以快速将重复的筛除,并将符合筛选条件且不重复的记录复制到指定的区域。

    c# 去掉TXT重复手机号码

    读取txt手机号码源码 这个读取txt的简单源码 并判断取的值是否为手机格式 然后筛除重复的号码

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

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

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

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

    文本情感分析:去停用词

    # 通过正则表达式筛除string中的标点符号 def clearn_str(string): # 筛除掉中文标点 string = re.sub(r'["#$%&'()*+,-/:;<=>@[\]^_`{|}~⦅⦆「」、 、〃〈〉《》「」『』【】〔〕...

    论文研究-VGI集成于中文数字地名词典的研究.pdf

    在构建VGI数据爬取模型(VDCM)和地名本体的基础上, 针对从VGI数据中提取地名信息过程中出现的地名geo/geo歧义(多个地理位置对应同一地名)、地名与经纬度匹配错误、多个资源对应同一地名等问题提出相应的解决方案...

    php使用imap类实例

    php利用imap类对邮件进行操作。显示邮件列表,显示邮件正文,可显示附件,可转换标题正文乱码。

    无信息变量消除法

    采用无信息变量消除法(UVE)对变量进行筛选,筛选出最重要的变量信息。

    unscented kalman filter by matlab

    unscented kalman filtering程序:包含函数和一个demon。程序包括五个步骤:参数计算、sigma点集计算、时间更新、观测更新、滤波更新。每一步都有详细的注释。以供学习参考。

    解决C#广播问题

    C#中发送广播消息的过程如下,注意要调用SetSockOption函数,不然要抛出异常: Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); IPEndPoint iep1 = new IPEndPoint...

    C#在DataTable中根据条件删除某一行的实现方法

    我们经常会将数据源放在DataTable里面,但是有时候也需要移除不想要...上面就是如何Datatable中某一行的id为99,就移除这一行,id为字段名 以上代码简单实现了c# datatable 删除某一行的实现方法,希望对大家有所帮助!

    Sifting Function Partition by Integer Sort for the Goldbach Problem

    Goldbach问题的筛函数按整数类别分割法,宋富高,,Goldbach问题中的所有筛法都要求筛除所有合数,虽然严格说那是不必要的,何况筛除所有合数一般是非常困难的. 本文引入的一种新的方�

    论文研究-融合边缘信息和扩展邻域的异源图像匹配.pdf

    在精匹配的基础上,通过快速校验边缘图像中匹配点对在扩展邻域内的结构特征一致性,检测并筛除部分误匹配点对,从而进一步提高匹配精度。通过采用多幅图像进行实验,处理结果表明,该算法能够有效改善可见光图像与...

    2021年研究生数学建模D题第一题-分子描述符的筛选与分析

    且代码中包含了详细注释与说明。 针对1974个化合物的729个分子描述符进行变量选择,根据变量对生物活性影响的重要性进行排序,给出前20个对生物活性最具有显著影响的分子描述符,对抗乳腺癌药物的研究具有参考意义。...

    一种基于UWB的三边定位改进算法

    筛除测量过程中产生的无效数据,确定有效搜索区域并在该区域内进行全局遍历,找到最优定位坐标,解决了求解值不是全局最优的问题。同时,为了进一步提高定位精度,采取了适当增加参考节点数量的措施。实验结果表明,...

    一种基于模型的自适应阈值分割算法 (2005年)

    为了减少穷举式阈值分割方法中的重复计算,提出了连通域树(CCtTree)的结构与构造算法。在进行新阈值下的分割与连通域标记时,根据原阈值分割标记后得到的结果,结合新出现的连通域,以合并的方式得到新阈值分割下...

Global site tag (gtag.js) - Google Analytics