`
YuHuang.Neil
  • 浏览: 189908 次
  • 性别: 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,表示这些数...

    visual basic常用算法大全

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

    艾托色尼法验证素数

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

    不同存储方式上求素数的

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

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

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

Global site tag (gtag.js) - Google Analytics