永发信息网

实现任意个数的排序问题?

答案:3  悬赏:50  手机版
解决时间 2021-04-30 02:27
  • 提问者网友:记得曾经
  • 2021-04-29 13:36
#include<stdio.h>

int main()
{
int i,sum,a[100];

printf("请输入要排序数字的个数:");
scanf("%d",&i);
printf("请输入%d个数字:",i);

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

for(int m=0;m<=i-1;++m)
{
for(int n=m+1;n<=i-1;++n)
{
if(a[m]<a[n])
{
sum=a[n];
a[n]=a[m];
a[m]=sum;
}
}
printf("%d ",a[m]);
}

return 0;
}

我想真正实现N为任意个数的排序,因为上面这段代码的N受数组影响,请问如何才能实现N为任意值的排序?
最佳答案
  • 五星知识达人网友:千杯敬自由
  • 2021-04-29 14:44
#include<stdio.h>
#include <stdlib.h> // malloc, free

int main()
{
int i,sum, *a; // 声明为指针

printf("请输入要排序数字的个数:");
scanf("%d",&i);

a = (int*)malloc(sizeof(int)*i); // 动态分配i个int

printf("请输入%d个数字:",i);

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

for(int m=0;m<=i-1;++m)
{
for(int n=m+1;n<=i-1;++n)
{
if(a[m]<a[n])
{
sum=a[n];
a[n]=a[m];
a[m]=sum;
}
}
printf("%d ",a[m]);
}

free(a); // 释放分配的内存
return 0;
}
全部回答
  • 1楼网友:蕴藏春秋
  • 2021-04-29 15:44
public class Sort { public static void main(String[] str){ int length = 5; int num[]=new int[length]; for(int i=0; i<length; i++){ Scanner in=new Scanner(System.in); System.out.print("请输入第"+(i+1)+"个数:"); num[i] = in.nextInt(); } int temp=0; for(int i=0;i<length; i++){ for(int j=0; j<length-1-i; j++){ if(num[j]>num[j+1]){ temp=num[j]; num[j] = num[j+1]; num[j+1] = temp; } } } System.out.println("排序后为:"); for(int i=0; i<length; i++){ System.out.print(num[i]+"\t"); } } }
  • 2楼网友:西岸风
  • 2021-04-29 15:27
#include<stdio.h> #include<stdlib.h> void main() { int i,j,num,n,*ptr; printf("请输入指针所含元素个数\n"); scanf("%d",&n); ptr=(int *)malloc(n*sizeof(int)); for(i=0;i<n;i++) { printf("请输入第%d个元素的值\n",i+1); scanf("%d",&ptr[i]); } for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { if(ptr[i]>ptr[j]) { num=ptr[i]; ptr[i]=ptr[j]; ptr[j]=num; } } } for(j=0;j<n;j++) printf("按从小到大顺序排列为:%d\n",ptr[j]); free(ptr); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯