数字去重排序问题

来源:互联网 发布:红包源码 编辑:程序博客网 时间:2024/06/10 00:03

样例:

输入:

10
20 40 321 67 40 20 89 301 407 15

输出:

8
15 20 40 67 89 301 321 407

输入:

20
20 40 321 677 40 20 89 301 407 515 40 321 67 40 20 89 301 407 15 499

输出:

11
15 20 40 67 89 301 321 407 499 515 677


#include <stdio.h>#include <stdlib.h>int b[101];int n;void quicksort(int left,int right){    if(left>right)    {        return;    }    int i,j,t;    int temp;    i=left;    j=right;    temp=b[left];    while(i!=j)    {        while(b[j]>=temp&&i<j)        {            j--;        }        while(b[i]<=temp&&i<j)        {            i++;        }        if(i<j)        {            //break;            t=b[i];            b[i]=b[j];            b[j]=t;        }    }    b[left]=b[i];    b[i]=temp;    quicksort(left,i-1);    quicksort(i+1,right);}int main(){    int sum=0,a[101];    int i,j;    scanf("%d",&n);    for(i=1;i<=n;i++)    {        scanf("%d",&b[i]);    }    quicksort(1,n);   /* for(i=1;i<=n;i++)    {        printf("%d ",b[i]);    }   */ a[1]=b[1];    j=2;    int z=n;    for(i=2;i<=n;i++)    {        if(b[i]==b[i-1])        {            z--;        }        else        {            a[j]=b[i];            j++;        }    }    printf("%d\n",z);    for(i=1;i<=z;i++)    {        printf("%d ",a[i]);    }    getchar();getchar();    //system("pause");    return 0;}

其中使用了快速排序方法,并在输出时去重处理。

0 0
原创粉丝点击