简单C排序算法系列——Selection sort 选择排序算法
/*
Name: Sorting Algorithm Selection sort
Copyright:
Author: Nirvana Of Phoenixl
Date: 14/03/22 18:20
Description:
Selection sort 选择排序法 (从小到大排序):利用数组下标记录
*/
#include <stdio.h>
void selection_sort(int arr[], int len)
{
int i,j,temp;
for(i=0;i<len-1;i++)
{
/*记录最小值,第一个元素默认最小(每次比较开始值为最小,因为上次已经比较过了)*/
int min = i;
/*从i个元素开始找最小,i之前已经排好*/
for(j=i+1;j<len;j++)
{
/*如果当前值,小于最小值,则记录当前值*/
if(arr[min]>arr[j])
{
min = j;
}
}
/*最小值标志不相等,则需要交换,将最小值存入a[min]中*/
if(min!=i)
{
temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
/* swap(&a[min], &a[i]); */ // 可使用自定义函数交換
}
}
/*
void swap(int *a,int *b) // 交换两个变量
{
int temp = *a;
*a = *b;
*b = temp;
}
*/
int main()
{
int arr[] = {32, 23, 54, 48, 78, 12, 10, 62, 5, 25};
/*计算数组元素个数*/
int len = (int)sizeof(arr)/sizeof(*arr);
int i;
/*选择排序函数*/
selection_sort(arr, len);
for(i = 0; i < len; i++)
{
/*打印排序后的数组元素*/
printf(" %d",arr[i]);
}
return 0 ;
}