C语言,选择法排序,对数组A进行升序排列,求答案,谢大神!

2024-12-31 07:23:12
推荐回答(4个)
回答1:

给你个我以前写的降序的程序,你稍微改下就行了,我懒得改了,

#include
#define N 10
main()
{
int i,j;/*i,j为循环变量*/
long a[N],temp,min; /*a[min]为比较时较小的数*/
printf("请依次输入%d个数。\n",N);
/*进行循环输入这十个数*/
for(i=0;i scanf("%ld",&a[i]);
printf("你输入的%d个数是\n",N);
/*进行循环输出这十个数*/
for(i=0;i printf("%ld ",a[i]);
printf("\n");
/*利用选择法,即从后9个比较过程中,选择一个最小的与第一个

元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。*/
for(i=0;i {
min=i;
for(j=i 1;j if(a[j]>a[min])
{
temp=a[j];
a[j]=a[min];
a[min]=temp;
}
}
printf("这%d个数从大到小排列为\n",N);
/*打印出这十个经排列后的数*/
for(i=0;i printf("%d ",a[i]);
printf("\n");
}

回答2:


void SelectSort(DataType a[], int n)
{  int i, j, small; DataType temp;
   for(i = 0; i < n-1; i++)
   {  small = i;                                for(j = i+1;j                   a[i] = a[small];
                   a[small] = temp;
                   }
    }
}

回答3:

#include
#include
main()
{
int i,j,A[20],t;
srand((int)time(0)); //设定随机数种子
for(i=0;i<20;i++)
{
j=100+(int)(100.0*rand()/(RAND_MAX+1.0));
printf(" %d ",j);
A[i]=j;
}
printf("\n");
printf("********************************************\n");
printf("升序排序后的结果为:\n");
for(i=0;i<20;i++)
for(j=i+1;j<20;j++)
if(A[i]>A[j])
{
t=A[i];
A[i]=A[j];
A[j]=t;
}
for(i=0;i<20;i++)
printf("%d ",A[i]);
printf("\n");
}

回答4:

#include
using namespace std;
int main()
{
int a[4];
int i,j,t,min;
cout<<"input 4 numbers:"<for(i=0;i<4;i++)
cin>>a[i];
for(i=0;i<=3;i++)
{min=i;
for(j=i+1;j<=4;j++){
if(a[min]>a[j])
{
t=a[j];
a[j]=a[min];
a[min]=t;}
}
}
cout<<"the sorted numbers:"<for(i=0;i<4;i++)
cout<cout<return 0;
}
从小到大的排序