C语言中用数组如何对数据进行大小排列,可有程序参考?谢谢!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中用数组如何对数据进行大小排列,可有程序参考?谢谢!相关的知识,希望对你有一定的参考价值。
#define NUM 10
main()
int a[NUM],i,j,r,temp;
printf("please input %d number\n",NUM);
for(i=0;i<NUM;i++)
scanf("%d",&a[i]);
for(i=0;i<NUM-1;i++)
r=i;
for(i=i+1;j<NUM-1;j++)
if(a[i]<a[r])
r=j;
if(r!=i)
temp=a[i];
a[i]=a[r];
a[r]=temp;
printf("The array after sort:\n");
for(i=0;i<NUM;i++)
printf("%5d",a[i]);
printf("\n");
getch();
这个程序有没有问题?能不能解释一下?
#define NUM 10
main()
int a[NUM],i,j,r,temp;
printf("please input %d number\n",NUM);
for(i=0;i<NUM;i++)
scanf("%d",&a[i]);
for(i=0;i<NUM-1;i++)
/*我这里没有使用r=i*/
for(j=i+1;j<NUM-1;j++)
/*你的程序问题就在这里了,我这里是j=i+1,你那里是i=i+1,j没有初值不说,还让i加1,这就意味这使外循环少执行几次*/
if(a[i]<a[j])
temp=a[i];
a[i]=a[j];
a[j]=temp;
printf("The array after sort:\n");
for(i=0;i<NUM;i++)
printf("%5d",a[i]);
printf("\n");
getch();
参考技术A #define NUM 10 //定义一个数,其大小为十
main()
int a[NUM],i,j,r,temp; //上面就不用说了吧
printf("please input %d number\n",NUM); //输出num的值
for(i=0;i<NUM;i++) //循环语句
scanf("%d",&a[i]); //输入数组a[i]
for(i=0;i<NUM-1;i++)
r=i;
for(i=i+1;j<NUM-1;j++)
if(a[i]<a[r])
r=j;
if(r!=i)
temp=a[i];
a[i]=a[r];
a[r]=temp;
//以上为各个数比较大小,然后大小交换位置
printf("The array after sort:\n"); //输出排序后的的数字
for(i=0;i<NUM;i++)
printf("%5d",a[i]);//逐个输出数组的值
printf("\n"); //空行
getch();
对数据长度为n的数组内的数据进行全排列,c语言
#include<stdio.h>#include<math.h>
int ans[15];
int a[15],n;
int used[15]=0;
void DFS(int deep)
int i;
if(deep==n)
for(i=0;i<n;i++)
printf("%d ",ans[i]);
puts("");
return ;
for(i=0;i<n;i++)
if(used[i])continue;
used[i]=1;
ans[deep]=a[i];
DFS(deep+1);
used[i]=0;
int main()
int i;
scanf("%d",&n);
for(i=0;i<n;i++)scanf("%d",&a[i]);
DFS(0);
return 0;
参考技术A 问题描述不清楚追问
输入第一行是数组长度
第二行是数组内容
输入:
3
1 2 3
输出:
1 2 3
2 1 3
2 3 1
3 1 2
3 2 1
1 3 2
我想用递归
输入第一行是数组长度
第二行是数组内容
输入:
3
1 2 3
输出:
1 2 3
2 1 3
2 3 1
3 1 2
3 2 1
1 3 2
我想用递归
以上是关于C语言中用数组如何对数据进行大小排列,可有程序参考?谢谢!的主要内容,如果未能解决你的问题,请参考以下文章