当前位置:文档之家› 用选择法对数组排序

用选择法对数组排序

例.用选择法对数组排序。


选择法排序原理:一次选定数组中的每一个数,记下当前位置并假设它是从当前位置开始后面数中的最小数(min=i),从这个数的下一个数开始扫描直到最后一个数,并记录下最小数的位置(min),扫描结束后如果min不等于i,说明假设错误,则交换min与i位置上数。

int sort(int a[],int n)
{
int i,t,j,min;
for(i=0;i{
min=i;
for(j=i+1;jif(a[j]min=j;
if(min!=i)
{
t=a[i];
a[i]=a[min];
a[min]=t;
}
}
}
假设有5个数
5,4,3,2,1分别存放于数组a[0],a[1],a[2],a[3],a[4]
第一步以 设基准索引i = 0, 则数a[0]为基准,也就是从a[1..4]中的数进行选择,若比基准小,则和基准做对换,反之则不动,设比较索引j=1开始比较。
j = 1 --> a[0]=5 > a[1]=4 则 a[0] <==> a[1],结果为4,5,3,2,1
j = 2 --> a[0]=4 > a[2]=3 则 a[0] <==> a[2],结果为3,5,4,2,1
j = 3 --> a[0]=3 > a[3]=2 则 a[0] <==> a[3],结果为2,5,4,3,1
j = 4 --> a[0]=2 > a[4]=1 则 a[0] <==> a[4],结果为1,5,4,3,2
由于j已经达到数组末尾则认为i=0即a[0]元素已经排序,而i=0并未达到数组尾部则i=i+1也就是i=2,然后重复上述步骤直到i=4为止。注意j的起始比较索引是随着i变化而变化的,它们的关系是j = i+1

相关主题
文本预览
相关文档 最新文档