#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为任意值的排序?
实现任意个数的排序问题?
答案:3 悬赏:50 手机版
解决时间 2021-04-30 02:27
- 提问者网友:记得曾经
- 2021-04-29 13:36
最佳答案
- 五星知识达人网友:千杯敬自由
- 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;
}
#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);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯