选择排序法实现的步骤:首先找出一个最小数交换到最前面;然后在剩下的数中找个最小的交换到剩下数最前面;最后一直重复此步骤,直到所有数排好即可。

选择排序法实现的步骤:找出一个最小数交换到最前面,然后在剩下的数中找个最小的交换到剩下数最前面,一直重复此步骤,直到所有数排好

【推荐课程:C语言教程】
在C语言中选择排序法是一种较为常见的方法,它的排序效率比冒泡法高且算法也并不复杂。
立即学习“C语言免费学习笔记(深入)”;
选择排序法的思路是:
1、找出一个最小数,交换到最前面。
2、在剩下的数里面,再找一个最小的,交换到剩下数的最前面
3、重复步骤2 ,直到所有数都已排好。
显然,对于含有N个数的数组来说,其过程也要进行N-1趟 ( 0 <= i < N-1 )。
找出一个最小数,交换到最前面的方法是:
先将剩下数中的第一个数(序号是i)作为基数,用变量k记下其序号,后面的数依次与该基数比较,若比基数还小,则用k记下其序号(注意:此时不要交换),当所有数都与基数比较后,k中存放的就是最小数的序号,然后将它交换到最前面(现在才交换)。在上面的过程中,数据只交换了一次,即每趟只交换一次数据。
例:
#include<stdio.h>
#include<stdlib.h>
#define N 8
void select_sort(int a[],int n);
//选择排序实现
void select_sort(int a[],int n)//n为数组a的元素个数
{
//进行N-1轮选择
for(int i=0; i<n-1; i++)
{
int min_index = i;
//找出第i小的数所在的位置
for(int j=i+1; j<n; j++)
{
if(a[j] < a[min_index])
{
min_index = j;
}
}
//将第i小的数,放在第i个位置;如果刚好,就不用交换
if( i != min_index)
{
int temp = a[i];
a[i] = a[min_index];
a[min_index] = temp;
}
}
}
int main()
{
int num[N] = {89, 38, 11, 78, 96, 44, 19, 25};
select_sort(num, N);
for(int i=0; i<N; i++)
printf("%d ", num[i]);
printf("\n");
system("pause");
return 0;
}效果图:

总结:以上就是本篇文章的全部内容了,希望对大家有所帮助
以上就是C语言中如何实现选择排序算法的详细内容,更多请关注php中文网其它相关文章!
C语言怎么学习?C语言怎么入门?C语言在哪学?C语言怎么学才快?不用担心,这里为大家提供了C语言速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号