用两个数组和函数调用形式完成数组排序

img


这个是题目,要求不能使用库函数来做,(sort只是函数名字,而非采用c++的sort和c的qsort排列函数来做),用两个数组完成题目
下面是我用一个数组且不用函数的做法

img

循环遍历,每次查找剩余数组中最大值,找到后记录下标,把最大数跟最后一个数组元素交换位置,并把当前最大数插入Y,下一次查找最大数的时候,从0到n-1遍历(因为最后一个位置放的是最大值),找到最大值,跟n-2位置交换,并插入Y,以此类推

两个数组就是一个新数组用来存放第一个数组中从大到小的数。
用循环重复找出未在第二个数组中存在的最大数,直到第一个数组中只有一个元素break循环。


#include<stdio.h>
#define N  10
void p_output(int* p, int n)
{
    int i;
    for (i = 0; i < n; i++)
    {
        printf("%d ", *(p + i));
    }
}
void p_sort(int* p, int n)
{
    int i,j;
    for(i=0;i<n-1;i++)
        for (j = 0; j < n - 1 - i; j++)
        {
            if (*(p + j) > *(p + j + 1))
            {
                int temp = *(p + j);
                *(p + j) = *(p + j + 1);
                *(p + j + 1) = temp;
            }
        }
    p_output(p, n);
}
int main()
{
    int a[N];
    int i;
    int *p = a;
    for (i = 0; i < N; i++)
    {
        scanf_s("%d", a + i);
    }
    p_sort(p, N);
    return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632