数组练习及使用方法训练

若有数组 arr[10]= (36,1,26,40,32,23,98,77,2,251写一个bubbleSort函数,通过一个指针数组 aptr[10]对arr进行排序。要求不能改变arr数组顺序,最后把arr和aptr的所有元素输出并对比

细讲过程

可以用选择排序,每次从arr里选一个大于i的最小(或小于i的最大)的数,放入aptr中。这样就达到升序(或降序)排序效果。如果升序排,i初始为整数最小值,从arr找到大于它的最小数后,将i更新为这个值。如果降序排,i初始值为整数最大值,从arr找到小于它的最大数后,将i更新为这个值。

供参考:

#include <stdio.h>
void bubbleSort(int *aptr[], int n)
{
    int i, j, *t;
    for (i = 0; i < n - 1; i++){
        for (j = 0; j < n - i - 1; j++)
        {
            if (*aptr[j] > *aptr[j + 1])
            {
                t = aptr[j];
                aptr[j] = aptr[j + 1];
                aptr[j + 1] = t;
            }
        }
    }
}

int main()
{
    int arr[10] = {36,1,26,40,32,23,98,77,2,251},i,*aptr[10];
    for (i = 0; i < 10; i++)
        aptr[i] = &arr[i];

    bubbleSort(aptr, 10);

    for (i = 0;i < 10; i++)
        printf("%d ", arr[i]);
    printf("\n");
    for (i = 0;i < 10; i++)
        printf("%d ", *aptr[i]);

    return 0;
}

  • 以下回答由chatgpt基于相关博客总结生成:

    这里给出的是一个2048小游戏的代码,主要包括随机生成数字、移动数字、判断游戏是否结束等操作。如果想对数组进行排序、查找、删除或者遍历等操作,可以使用Matlab自带的函数,也可以自己编写函数实现。

    比如,可以使用sort函数对数组进行排序,示例代码如下:

    a = [4, 2, 5, 1, 3]; b = sort(a); % 将a从小到大排序,得到[1, 2, 3, 4, 5]

    可以使用find函数查找数组中满足条件的元素,示例代码如下:

    a = [4, 2, 5, 1, 3]; idx = find(a>3); % 查找a中大于3的元素的下标,得到[1, 3]

    可以使用delete函数删除数组中指定的元素,示例代码如下:

    a = [4, 2, 5, 1, 3]; a(3) = []; % 删除a中下标为3的元素,得到[4, 2, 1, 3]

    可以使用for循环遍历数组中的所有元素,示例代码如下:

    a = [4, 2, 5, 1, 3]; for i = 1:length(a) disp(a(i)); % 依次输出a中的所有元素 end

    对于如何让chatgpt更好地理解问题,可以在问题描述中添加示例或者关键词,这样可以提高chatgpt的理解和准确率。同时,可以考虑对chatgpt进行训练,让其更好地适应问题场景。