c语言编程问题

定义数组:{ 0,1,5,2,5,7,3,4,5,1,1,2,3,6,7,8,8
按升序排序
•重复数据删除
打印过程0 17图片说明

5个回答

 #include <stdio.h>
#define NUM 18
int main()
{
    int a[NUM]={ 0,1,5,4,2,5,7,8,3,4,5,1,1,2,3,6,7,8 },b[NUM];
    int i,j,temp;
    printf("initial values:\t");

    for( i=0; i<NUM; i++ )
    {
        printf("%d ",a[i]);
    }
    printf("\n\n");

    for( i=0; i<NUM; i++ )
    {
        printf("process %d:\t",i);
        for( j=0; j<NUM-1; j++)
        {
            if(a[j]>a[j+1])
            {
                temp=a[j]; a[j]=a[j+1]; a[j+1]=temp;
            }
            printf("%d ",a[j]);
        }
        printf("%d\n",a[j]);
    }

    printf("\nsort values :\t");
    for( i=0; i<NUM; i++ )
    {
        printf("%d ",a[i]);
    }
    printf("\n");
    b[0]=a[0];
    printf("Deduplication :\t%d ",b[0]);
    for( i=1,j=0; i<NUM; i++ )
    {
        if(b[j]!=a[i]) 
        {
            b[++j]=a[i];
            printf("%d ",b[j]);
        }
    }
    printf("\n");
}

用的是插入排序,其实第9步已经整体有序,后面的9步又有什么意义?

楼主的问题是神马?没明白你什么问题

#include

#define N 10

int clear_duplication(int *p, int n, int *b)
{

int i, l = 0;
b[l]=p[0];
for(i=1; i< n; i++)
{
    if(b[l] == p[i])
    {
        continue;
    }else{
        l++;
        b[l]=p[i];
    }
}
return ++l;

}

void print_arr(int *p, int n)
{
int i;
for(i=0; i<n; i++)
{
printf(" %d", p[i]);
}
putchar(10);
}

int main()
{
int a[N] = {0, 1, 5 , 2, 5, 7, 3, 4, 5, 1};
int i, temp,ret;
int step=0;
int b[N]= {0};

for(step=0; step < N; step++)
{
    for(i=0; i< N; i++)
    {

        if(a[i] > a[i+1])
        {
            temp =  a[i];
            a[i] = a[i+1];
            a[i+1] = temp;
        }
    }
    printf("process %d: ", step);
    print_arr(a, 10);
}
printf("sort values: ");
print_arr(a, 10);

ret = clear_duplication(a,10,b);

printf("Deduplication: ");
print_arr(b, ret);

return 0;

}


你都写出来了,还要问什么????

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐