选择排序思想:若按照递增顺序对顺序表进行排列,在n个元素的顺序表中,从第i(i=1)个元素开始遍历到第n-1个元素,在遍历过程中都将第i个元素依次与第i+1到第n个元素进行比较,确定最小的元素,如果最小的元素不是第i个元素则将其与最小的元素进行交换。
代码如下:
#include<stdio.h>
void select_sort(int a[],int n){
int i,j,min,temp=0; //变量i,j用来遍历数组,min用来标记最小值的位置,temp用于交换两个变量的值
for(i=0;i<n-1;i++){ //从第1个元素开始遍历到第n-1个元素
min=i; //每一轮遍历都先将i的值赋给min,默认a[i]是最小元素
for(j=i+1;j<n;j++){ //从第i+1开始遍历,并逐一与a[i]进行比较
if(a[min]>a[j]) //若a[min]>a[j]则将j的值赋给min,用来记录当前最小元素的位置
min=j;
}
if(min!=i){ //当a[i]与待比较的元素比较完后,若min的位置与i不一致
temp=a[i]; //那么就将最小的元素a[min]与a[i]进行交换
a[i]=a[min];
a[min]=temp;
}
}
}
int main(){
int a[]={6,2,1,3,4,5}; //初始化数组
int len=sizeof(a)/sizeof(a[0]); //用变量len接收数组长度计算出来
printf("排序前的数组:\n");
for(int i=0;i<len;i++) //遍历排序前的数组
printf("%d ",a[i]);
printf("\n");
select_sort(a,len); //使用选择排序算法
printf("排序后的数组:\n");
for(int i=0;i<len;i++) //遍历排序后的数组
printf("%d ",a[i]);
return 0;
}
运行结果:
文章来源:https://www.toymoban.com/news/detail-505217.html
文章来源地址https://www.toymoban.com/news/detail-505217.html
到了这里,关于简单选择排序——C语言实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!