有依次对应关系的数组X、Y、Z,如何排序其中一个X数组,使得另外的数组还与排序完成后的数组相对应(C语言实现)

1. 目的

   有依次对应关系的数组X、Y、Z,排序其中一个X数组,使得另外的数组还与排序完成后的数组相对应,并打印出排序完成后的X、Y、Z数组。

2. 具体实现

  以下面的这个对应关系为例,进行相应编程实现。

c 复制代码
X = [3.7,7.7,-6.6,1.5,-4.5,7.0,3.2,-0.7,9.0,-2.2];
Y = [-1.2,5.1,9.7,3.6,-6.6,7.6,-3.0,10.0,-4.1,0.1];
Z = [10.2,8.0,4.8,17.6,5.6,0.2,14.8,6.2,3.7,11.9];

  要对其中数组进行排序并保持它们之间的一一对应关系,可以使用结构体数组来实现。对于排序,这里使用简单的冒泡排序(其他排序都可以)来实现,具体代码如下:

c 复制代码
#include <stdio.h>
// 定义结构体
typedef struct {
    float x;
    float y;
    float z;
} Point;

//简单的冒泡排序
void bubbleSort(Point arr[], int n) {
    for (int i = 0; i < n-1; i++) {
        for (int j = 0; j < n-i-1; j++) {
            if (arr[j].x > arr[j+1].x) {
                // 交换结构体元素
                Point temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}
int main() {
    // 假设有三个数组
    float  X[10] = {3.7,7.7,-6.6,1.5,-4.5,7.0,3.2,-0.7,9.0,-2.2};
    float  Y[10] = {-1.2,5.1,9.7,3.6,-6.6,7.6,-3.0,10.0,-4.1,0.1};
    float  Z[10] = {10.2,8.0,4.8,17.6,5.6,0.2,14.8,6.2,3.7,11.9};
    // 创建结构体数组并初始化
    Point points[10];
    for (int i = 0; i < 10; i++) {
        points[i].x = X[i];
        points[i].y = Y[i];
        points[i].z = Z[i];
    }
    // 对结构体数组进行排序
    bubbleSort(points, 10);
    // 打印排序后的X数组结果
    printf(" X = [");
    for (int i = 0; i < 10; i++) {
        printf("%.1f", points[i].x);
		if (i < 9) {
            printf(", ");
        }
    }
	 printf("];\n");
  // 打印排序后的Y数组结果
	 printf(" Y = [");
    for (int i = 0; i < 10; i++) {
        printf("%.1f", points[i].y);
		if (i < 9) {
            printf(", ");
        }
    }
	 printf("];\n");
  // 打印排序后的Z数组结果
	 printf(" Z = [");
    for (int i = 0; i < 10; i++) {
        printf("%.1f", points[i].z);
		if (i < 9) {
            printf(", ");
        }
    }
	 printf("];\n");
    return 0;
}

  运行结果如下:

相关推荐
灯厂码农14 小时前
C语言动态内存分配完全指南(malloc、calloc、realloc、free)
java·c语言·算法
wuyk55515 小时前
24. C 语言模块化:不是拆几个.c 文件那么简单
c语言·开发语言·stm32·单片机
qq_2415856115 小时前
可用在中断中浮点数打印类似printf
c语言
C语言小火车16 小时前
C++ 快速排序(Quick Sort)深度精讲:分治思想、Lomuto 分区法及三数取中优化,面试手撕必会
c语言·开发语言·c++·面试·排序算法·快速排序
aaaameliaaa18 小时前
进制练习题【找出只出现一次的数字、交换两个变量(不创建临时变量)、统计二进制中1的个数、打印整数二进制的奇数位和偶数位、求两个数二进制中不同位的个数】
c语言·数据结构·笔记·算法
灯厂码农18 小时前
C语言内存管理——内存对齐与共用体union
linux·服务器·c语言
伏 念21 小时前
AI Coding 零基础实战教程
c语言·进程·预处理
你家人养牛21 小时前
OOC Relation Plugin:C 语言面向对象 开发的高效辅助工具
c语言·vscode
东华万里21 小时前
第30篇 代码习惯 初学C与数据结构有感
c语言·数据结构·大学生专区
想你依然心痛21 小时前
嵌入式C代码规范:MISRA-C 2012核心规则解读——类型安全与未定义行为深度剖析
c语言·安全·代码规范