sort()函数应用

编写sort()函数,实现将 main()函数中的整型数组 a按降序排列,要求使用指针作为函数的参数。

参考如下:


#include<stdio.h>

// 从前往后冒泡
void sort(int *a,int n)
{
    int i,j,t,noswap;
    for(i=0;i< n-1; i++)
    {
        noswap=1;
        for(j=0;j<n-1-i;j++)
            if(a[j+1]>a[j])
            {
                t=a[j+1];
                a[j+1]=a[j];
                a[j]=t;
                noswap=0;
            }
        if(noswap)  
            break;
    }
}

int main() 
{
     
    int n;
    printf("Input n:");
    scanf("%d", &n);
     
    printf("Input %d numbers:", n);

    int a[n];
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }

    sort(a, n);

    printf("Sorting results:");
    for (int i = 0; i < n; i++) 
    {
        printf("%d ", a[i]);
    }

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

    我能够编写一个能够将整型数组按降序排列的sort()函数,并且使用指针作为函数参数,具体步骤如下:

    1. 定义函数,函数名为my_sort,参数为整型数组指针arr和数组长度len。
    2. 在函数中使用冒泡排序或选择排序算法实现降序排列,具体实现过程如下: a. 从第一个元素开始循环,比较相邻的两个元素,将较大的元素交换到前面。完成一次循环后,最大的元素就被排到了数组的最后面。 b. 再次循环,但是只需要对前面的元素进行比较和交换,不需要考虑数组最后面已经排好的元素。 c. 重复执行上述步骤,直到整个数组都排好序为止。
    3. 在main函数中调用my_sort函数进行测试,将测试结果输出。

    代码如下:

    #include<iostream>
    using namespace std;
    
    void my_sort(int* arr, int len) {
        for (int i = 0; i < len - 1; i++) {
            for (int j = 0; j < len - i - 1; j++) {
                if (arr[j] < arr[j + 1]) {//比较相邻的两个元素
                    //如果前面的元素比后面的元素小,就交换位置
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }
    
    int main() {
        int arr[] = { 5, 8, 2, 3, 1 };
        int len = sizeof(arr) / sizeof(arr[0]);
        my_sort(arr, len);
        for (int i = 0; i < len; i++) {
            cout << arr[i] << " ";//输出排好序的数组
        }
        return 0;
    }