c语言数组排序中的选择法是什么意思啊?

如题所述

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中 选出 最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。所以这种排序的方法叫选择法排序。

C语言参考实例:

#include <stdio.h>
void main()
{
    int a[]={1,3,4,2,0} ;
    int i,j,n=5;
    for( i=0;i<n-1;i++ )
for( j=i+1;j<n;j++ ) //每一遍都与当前a[i]比较
if ( a[i] < a[j] ) //大的前移
{
int t=a[i];
a[i]=a[j];
a[j]=t ;
}

for( i=0;i<n;i++ )
printf("%d ", a[i] );
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-11
选择排序,从第一个数组元素开始,把第一个元素分别与后面元素比较,谁比第一个元素小,就和第一个元素交换位置,然后再以这个交换过的元素跟后面的比,直到最后一个元素,比完之后呢,现在数组的第一个元素肯定是全数组最小的,然后再从第二个元素开始以之前的方法跟后面的比,完成后第二个元素就是全数组第二小的,一直这样比到最后,就是从小到大的选择排序法,如果没听懂,直接百度搜“选择排序”,应该会有更具体的答案本回答被网友采纳
第2个回答  推荐于2017-09-10
我上代码吧,这样便于理解:
选择排序,由小到大

#include<stdio.h>
void main()
{
int s[]={5,10,3,7,2,8,9};
int i,j,n;
for(i=0;i<=6;i++) //控制循环次数,第一次循环过后s[0]肯定是最小的元素值了那么第二次就是s[1]这是最小的元素值了,依此类推
for(j=i+1;j<=6;j++)
if(s[i]>s[j]) //交换,使每一次都拿s[i]和后面的比较,若s[i]<s[j]则不交换
{
n=s[i];
s[i]=s[j];
s[j]=n;
}
for(i=0;i<=6;i++)
printf("%d ",s[i]);
putchar('\n');
}本回答被提问者采纳