循环遍历,每次查找剩余数组中最大值,找到后记录下标,把最大数跟最后一个数组元素交换位置,并把当前最大数插入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;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!