【C语言】整数数组去重并排序

一、c语言中自有的qsort()函数

  1. 功能:使用快速排序对要排序的对象进行排序
  2. 原型:void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *));
    参数介绍:
    1)待排序数组的首地址
    2)待排序数组中元素的个数
    3)各个元素所占的空间大小
    4)指向排序规则函数的指针,确定排序的规则
    注意:这个函数必须要自己写比较函数,即使要排序的元素是int, float等基础数据类型

二、将整数数组去重并排序

  1. 题目描述
    给定一个整数序列,把其中重复的整数去掉,并将去重后的序列按从小到大的顺序输出

  2. 思路
    建立一个数组b,数组中的所有元素全部初始化为0,若num在序列中出现过,则b[ num ] = 1, 若num还没有在序列中出现过,则b[ num ] = 0

  3. 代码

#include 
#include 
#define MAX 1001

int cmp(const void *a, const void *b) //排序规则
{
     
    return *(int *)a - *(int *)b;
}

int main()
{
     
    int a[MAX]; //序列
    int b[MAX]={
     0}; //检测数组
    int n, num;
    int size = 0; //序列大小实时更新
    scanf("%d",&n);
    for(int i=0; i<n; i++)
    {
     
        scanf("%d",&num);
        if(b[num]==1) continue;
        a[size] = num;
        b[num] = 1;
        size += 1;
    }
    qsort(a,size,sizeof(int),cmp);//
    for(int i=0; i<size; i++) //输出去重排序后的序列
        printf("%d ",a[i]);
    printf("\n");
    return 0;
}
  1. 运行结果
    【C语言】整数数组去重并排序_第1张图片

你可能感兴趣的:(C/C++)