C语言采用选择法对数组元素按从大到小的顺序排列

急的很啊,高手帮忙在线等,运行后加分
2024-11-30 11:32:04
推荐回答(3个)
回答(1):

#include
#define SIZE 10
main()
{
int a[SIZE]={3,8,7,6,5,0,
1,2,9,4};
int max,pos;
int i,j;
printf("数组中原存放数据是:\n");
for(i=0;i printf("%3d",a[i]);
for(i=0;i {
max=a[i];
pos=i;
for(j=i+1;j if(a[j]>max)
{
max=a[j];
pos=j;
}
a[pos]=a[i];
a[i]=max;
printf("\n经过第%d次排序后,数组变为:\n",i+1);
for(j=0;j printf("%3d",a[j]);
}
}

回答(2):

写了一个,运行通过,要求输入十个数据,然后会输出排序后的结果。
这是选择法排序。

#include

int sort(int *array, int n)
{
int i = 0, k = 0, j = 0;
int t = 0;

for(i = 0; i < n - 1; i++)
{
k = i;
for(j = i + 1; j < n; j++)
{
if (*(array + k) > *(array + j))
k = j;

if (k != i)
{
t = *(array + i);
*(array + i) = *(array + k);
*(array + k) = t;
}
}
}

return 0;
}

int main()
{
int array[10];
int i = 0;

for(i = 0; i < 10; i++)
scanf("%d", &array[i]);

sort(array, 10);

for(i = 0; i < 10; i++)
printf("%d ", array[i]);

printf("\n");

return 0;
}

回答(3):

//选择排序
void sort ( int *data )
{
int count1 , count2 ;
int low , index ;
int temp ;

for ( count1 = 0 ; count1 < 10000 ; count1++ )
{
low = data[count1] ;
index = count1 ;

for ( count2 = count1 ; count2 < 10000 ; count2++ )
{
if ( data[count2] < low )
{
low = data[count2] ;
index = count2 ;
}
}

temp = data[index] ;
data[index] = data[count1] ;
data[count1] = temp ;

}
}
data是指向长度为10000的数组的指针
…………错了,这个是从小到大的排序,嘿嘿,重要的是思想~~~~~~~~