第1个回答 2011-10-22
#include<stdio.h>
void choose(int *,int);
void main()
{
int a[100]={0}; //本来想做成一个n个元素的动态数组,最近发现动态数组越来越没用,直接弄了个大的数组
int n;
scanf("%d",&n);
printf("输入%d个数:\n",n);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
printf("输入的%d个数为:",n);
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n选择排序后:\n");
choose(a,n);
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
}
void choose(int *pa,int n)
{
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
{
if (pa[i]>pa[j])
{
int temp=pa[i];
pa[i]=pa[j];
pa[j]=temp;
}
}
}
第2个回答 2011-10-22
void selectSort(int *p_nVec, const int p_nLen) //p_nVec是数组, p_nLen数组中元素个数
{
if (p_nVec == NULL || p_nLen <= 0 )
{
printf("Bad param.\n");
return;
}
int i, j;
int *nMin ;
int nTemp = 0;
for (i = 0; i < p_nLen; ++i)
{
nMin = (p_nVec +i);
for (j = i; j < p_nLen; ++j)
{
if (*nMin > *(p_nVec +j))
{
nTemp = *(p_nVec +j);
*(p_nVec +j) = *nMin;
*nMin = nTemp;
}
}
}
}
第3个回答 2011-10-28
//1.采用“冒泡法”对随机产生的10 个整数按由小到大的顺序排序
#if 0
#include<stdio.h>
#include<stdlib.h>
#define n 10
main()
{
int a[n],i,j,t;
for(i=0;i<10;i++) //随机产生
{
a[i]=rand()%100;
printf("%-5d",a[i]);
}
printf("\n");
for(i=0;i<n-1;i++) //冒泡法
for(j=0;j<n-1;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(i=0;i<n;i++)
printf("%-5d",a[i]);
printf("\n");
}
#endif
//2.采用“选择法”对随机产生的10个整数按由大到小的顺序排序
#if 0
#include<stdio.h>
#include<stdlib.h>
#define n 10
main()
{
int i,j,t,max,max_i,b[10];
for(i=0;i<n;i++)
{
b[i]=rand()%100;
printf("%-5d",b[i]);
}
printf("\n");
for(i=0;i<n-1;i++) //选择法
{
max =b[i];
max_i=i;
for(j=i;j<n;j++)
if(b[j]>max)
{
max=b[j];
max_i=j;
}
t=b[max_i];
b[max_i]=b[i];
b[i]=t;
}
for(i=0;i<n;i++)
printf("%-5d",b[i]);
printf("\n");
}
#endif
这有两种方式 ,你可以对照一下,这是经典的C语言题目。