gpt4 book ai didi

c - 反向冒泡排序保留头寸索引?

转载 作者:行者123 更新时间:2023-11-30 14:41:42 24 4
gpt4 key购买 nike

我有两个大小为 8 的 C 表格,其中包含以下元素

int  arr1[8]  = {400, 100, 213, 876, 900, 564, 211, 230};
float arr2[8] = {5.5, 2.1, 9.4, 2.6, 7.5, 4.3, 1.1, 7.5};

我想制作一个程序来根据 arr2 值降序显示数据(使用冒泡排序)如下:

ARR1  ARR2
213 9.4
900 7.5
230 7.5
400 5.5
564 4.3
876 2.6
100 2.1
211 1.1

-

#include <stdio.h>

void swap(float *xp, float *yp)
{
float temp = *xp;
*xp = *yp;
*yp = temp;
}

void BubbleSort(float arr[], int n)
{
int i, j;
for (i = 0; i < n-1; i++){

for (j = 0; j < n-i-1; j++) {

if (arr[j] < arr[j+1])
swap(&arr[j], &arr[j+1]);
}
}
}

void main(){
int arr1[8] = {400, 100, 213, 876, 900, 564, 211, 230};
float arr2[8] = {5.5, 2.1, 9.4, 2.6, 7.5, 4.3, 1.1, 7.5};

}

我遇到的问题是我知道我需要保留索引行数。请问你能帮帮我吗 ?

最佳答案

这看起来有点像一些家庭作业,所以我不会展示完整的程序。

您有两个选择:

  1. 为数据数组创建索引值为 0..7 的附加索引数组,并通过交换索引数组值进行排序。类似于
    if (arr[index[j]] < arr[index[j+1]]) swap(&index[j], &index[j+1]);

  2. 传递两个数组 arr1arr2进行冒泡排序并交换两个数组具有相同索引对的值。类似于
    if (arr2[j] < arr2[j+1]) { swapInt(&arr1[j], &arr1[j+1]); swapFloat(&arr2[j], &arr2[j+1]); }

使用结构数组比使用通过索引链接的两个数组(类似于数组结构)更好。

struct data {
int intval;
float floatval;
};

struct data arr[8];

以及BubbleSort类似的东西

if (arr[j].floatval < arr[j+1].floatval)
swap(&arr[j], &arr[j+1]);

关于c - 反向冒泡排序保留头寸索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54826578/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com