直接选择排序的作法是:第一趟扫描所有数据,选择其中最小的一个与第一个数据互换;第二趟从第二个数据开始向后扫描,选择最小的与第二个数据互换;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。
算法:
void selectsort(int a[],int n)
{
int i,j,p,temp;
for(i=1;i<=n-1;i++) //从第1个记录开始到倒数第2个结束
{
p=i; //准备
for(j=i+1;j<=n;j++) //第i个记录后开始到最后个结束,同时找到最小元素,下标为p表示
if(a[p]>a[j])
p=j; //确定为最小,
if(p!=i) //循环结束后,p为标记最小元素的下标,检查是否是同一数,如果不是,交换
{
x=r[k];
r[k]=r[i];
r[i]=x;
}
}
}
算法:
void selectsort(int a[],int n)
{
int i,j,p,temp;
for(i=1;i<=n-1;i++) //从第1个记录开始到倒数第2个结束
{
p=i; //准备
for(j=i+1;j<=n;j++) //第i个记录后开始到最后个结束,同时找到最小元素,下标为p表示
if(a[p]>a[j])
p=j; //确定为最小,
if(p!=i) //循环结束后,p为标记最小元素的下标,检查是否是同一数,如果不是,交换
{
x=r[k];
r[k]=r[i];
r[i]=x;
}
}
}