数组去重

问题:

比如有10个数

20 40 32 67 40 20 89 300 400 15

把里面相同的数去掉,并打印排序:

15 20 32 40 67 89 300 400

分析:

定义一个v数组,用来存储对应下标的p数组中的数是否被访问过,没有被访问过并且数和前一个相等就存储1,v数组默认存储0

for(int i=0;i<10;i++){

    if(v[i]==1){//说明这个数被访问过了,跳过就可以了

           continue;

    }

    for(int j=i+1;j<10;j++){

            if(p[i]==p[j]&&v[j]==0){//两个数相等,并且没有被访问过

                    v[j]=1;

            }

    }

代码:

#include

#include

#include

using namespace std;

int n;

int v[100];//看是否被访问过

int main(){

    srand((int)time(0));

    cin>>n;

    int p[n];

    for(int i=0;i

        //int m=rand()%1000+1;

        int m;

        cin>>m;

        p[i]=m;

    }

    for(int i=0;i

        if(v[i]==1){

            continue;

        }

        for(int j=i+1;j

            if(p[i]==p[j]&&v[j]==0){

                v[j]=1;

            }

        }

    }

    int p1[n];

    int k=0;

    for(int i=0;i

        if(v[i]==1){

            continue;

        }else{

            p1[k++]=p[i];

        }

    }

    //插入排序

    for(int i=1;i

        int temp=p1[i],j;

        for(j=i-1;j>=0;j--){

            if(p1[j]>temp){

                p1[j+1]=p1[j];

            }else{

                break;

            }

        }

        p1[j+1]=temp;

    }

    cout<

    for(int i=0;i

        cout<

    }

    return 0;

}

结果:

数组去重

你可能感兴趣的:(数组去重)