简单选择排序
基本思想:
设所排序序列的记录个数为n。i取1,2,…,n-1,从所有n-i+1个记录(R,R[i+1],…,R[n]中找出排序码最小的记录,与第i个记录交换。执行n-1趟 后就完成了记录序列的排序。
用C++描述算法如下:
template <class datatype >
void seqlist <datatype > ∷insertsort( )
{int i ,j,k;
datatype temp;
for(i =1;i<last;i++ )
{
k=i;
for(j=i+1;j<=last;j++)if(data[j]<data[k])k=j;
if(i!=k) //第i个元素与第k个元素交换
{
temp=data[k];
data[k]=data;
data=temp;
}
}
delete_ data(1);
};
数据结构课本上算法:
void Select_Sort(datatype R[ ],int n)
{/*对排序表R[1].....R[n]进行冒泡排法,n是记录个数*/
for(i=1;i<n;i++) /*做n-1趟选取*/
{k=i; /*在i开始的n-i+1个记录中选关键码最小的记录*/
for(j=i+1;j<=n;j++)
if(R[j].key<r[k].key)
;k=j /*k中存放关键码最小记录的下标*/
if(i!=k) /*关键码最小的记录与第i个记录交换*/
{R[0]=R[k];
R[k]=R;
R= R[0];
}
}
}