You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中如何提取唯一元素生成新数组并进行升序排序?

去除数组重复元素并生成可排序新数组的解决方案

你当前的代码已经能识别并打印数组中的唯一元素,但没有将这些元素保存为可用于后续排序的新数组。下面是修改后的完整实现,包含去重、生成新数组以及升序排序的功能:

完整代码

#include <stdio.h>

// 去重:将原数组中的唯一元素存入新数组,返回新数组的元素个数
int removeDuplicates(double arr[], int n, double uniqueArr[]) {
    int i, j, count = 0;
    for (i = 0; i < n; i++) {
        // 检查当前元素是否已存在于结果数组中
        int isDuplicate = 0;
        for (j = 0; j < count; j++) {
            if (arr[i] == uniqueArr[j]) {
                isDuplicate = 1;
                break;
            }
        }
        // 不存在则添加到新数组
        if (!isDuplicate) {
            uniqueArr[count++] = arr[i];
        }
    }
    return count;
}

// 冒泡排序:对double数组进行升序排序
void bubbleSort(double arr[], int n) {
    int i, j;
    double temp;
    for (i = 0; i < n - 1; i++) {
        for (j = 0; j < n - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

int main() {
    double arr[100], uniqueArr[100];
    int n, uniqueCount;
    
    printf("Input the number of elements to be stored in the array: ");
    scanf("%d", &n);
    
    printf("Enter the elements:\n");
    for (int i = 0; i < n; i++) {
        printf("element - %d : ", i);
        scanf("%lf", &arr[i]);
    }
    
    // 执行去重,得到无重复的新数组和其长度
    uniqueCount = removeDuplicates(arr, n, uniqueArr);
    
    // 对新数组进行升序排序
    bubbleSort(uniqueArr, uniqueCount);
    
    // 输出最终结果
    printf("\n去重并升序排序后的数组:\n");
    for (int i = 0; i < uniqueCount; i++) {
        printf("%.2f ", uniqueArr[i]);
    }
    
    return 0;
}

关键改进点说明

  • 生成新数组:新增removeDuplicates函数,通过遍历原数组并检查元素是否已存在于结果数组,将唯一元素存入uniqueArr,同时返回新数组的元素个数(因为去重后长度会小于等于原数组)。
  • 独立排序功能:拆分出bubbleSort函数专门处理排序,针对double类型数组实现升序排列,逻辑清晰且复用性强。
  • 流程解耦:将输入、去重、排序、输出拆分为独立步骤,避免原代码中输入与去重打印混在一起的问题,更便于后续扩展。

内容的提问来源于stack exchange,提问作者annnna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 17:40:45