C语言程序中的选择法排序是?

 我来答
pkuqingniao
2011-03-28
知道答主
回答量:2
采纳率:0%
帮助的人:0
展开全部
每次从待序记录中选出排序码最小的记录,顺序放在已排好的记录序的后面,直到全部排完。
直接选择排序
void selectSort(SortObject * pvector)
{
int i,j,k;
RecordNode temp;
for(i=0;i<pvector->n-1;i++)
{
k=i;
for(j=i+1;j<pvector->n-1;j++)
{
if(pvector->record[j].key>pvector->record[k].key)
k=j;
if(k!=i){
temp=pvector->record[k];
pvector->record[k]=pvector->record[i];
pvector->record[i]=temp;
}
}
}

参考资料: <<算法与数据结构>>

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1024程序员
2020-03-26 · TA获得超过374个赞
知道答主
回答量:457
采纳率:0%
帮助的人:22.8万
展开全部

C语言经典例子之选择法排序

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
网络世界
推荐于2016-07-20 · 网络热点,科普知识
网络世界
采纳数:174 获赞数:1328

向TA提问 私信TA
展开全部
以整形数组元素为例,有数组A[10](以C语言为例描述),即A[0],A[1],…,A[8],A[9](假设其元素均互不相同)。要求对其元素排序使之递增有序。
首先以一个元素为基准,从一个方向开始扫描,比如从左至右扫描,以A[0]为基准。
接下来从A[1],…,A[9]中找出最小的元素,将其与A[0]交换。
然后将基准位置右移一位,重复上面的动作,比如,以A[1]为基准,找出A[1]~A[9]中最小的,将其与A[1]交换。
一直进行到基准位置移到数组最后一个元素时排序结束(此时基准左边所有元素均递增有序,而基准为最后一个元素,故完成排序)。
以下为一个用C描述的函数实现上述排序:
void sort(int array[],int n)
{ // n 为数组元素个数
int i,j,k,temp; // i 为基准位置,j 为当前被扫描元素位置,k 用于暂存出现的较小的元素的位置
for(i=0;i<n-1;i++)
{k=i;//初始化为基准位置
for(j=i+1;j<n;j++)
{
if (array[j]<array[k]) k=j ; // k 始终指示出现的较小的元素的位置
} //for
if(k!=i)
{ temp=array[i];
array[i]=array[k];
array[k]=temp; // 将此趟扫描得到的最小元素与基准互换位置
}
}
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式