糯米w 2018-11-22 10:15 采纳率: 0%
浏览 2414

c语言如何进行去重加排序?

#include <stdio.h>
void cutnumber(int k[],int q){
    int i,j;
    for (i=0; i<q-1; i++) {        //去重
        for (j=i+1; j<q; j++) {
            if (k[j]==k[i]) {
                k[j]=-1;
            }
        }
    }
}
void insort(int k[],int n){       //排序
    int i,j;
    int temp;
    for (i=1; i<n; i++) {
        temp=k[i];
        for (j=i-1; j>=0&&temp<k[j]; j--) {
            k[j+1]=k[j];
        }
        k[j+1]=temp;
    }
}

int main()
{
    int a[]={1,4,5,3,3,6,7,7,0,9,1,4};
    insort(a, 12);
    cutnumber(a, 12);
    for (int i=0; i<12; i++) {
        if (a[i]>=0) {
            printf("%d ",a[i]);
        }
    }
}


对与一系列>=0的整数,能这么写吗?

  • 写回答

1条回答 默认 最新

  • threenewbee 2018-11-22 11:22
    关注

    可以这么写,但是没有必要,你这个去重复单独做了2重循环。实际上去重和排序可以一次搞定

    int insort(int k[],int n){
        int q = n;
        for (int i = 0; i < q; i++)
        {
            int m = i;
            for (int j = m + 1; j < q; j++)
            {
                if (k[m] > k[j]) 
                {
                    m = j;
                }
                else
                {
                    if (k[m] == k[j])
                    {
                        int t = k[q - 1];
                        k[q - 1] = k[j];
                        k[j] = t;
                        q--;
                        j--;
                    }
                }
            }
            if (m != i)
            {
                int t = k[m];
                k[m] = k[i];
                k[i] = t;
            }
        }
        return q;
    }
    
    int main()
    {
        int a[]={1,4,5,3,3,6,7,7,0,9,1,4};
        int q = insort(a, 12);
        for (int i=0; i<q; i++) {
            printf("%d ",a[i]);
        }
    }
    

    如果问题得到解决,请点我回答左上角的采纳和向上的箭头,谢谢

    评论

报告相同问题?

悬赏问题

  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥50 汇编语言除法溢出问题
  • ¥65 C++实现删除N个数据列表共有的元素
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波