选择排序是另一种经典排序算法,核心思想是:在一趟找最小(大)数的过程中,先假设待排数据中的第一个数据即为最小(大)数据,然后循环将其他数据与该数据比较,每次比较时若小于该数据则让新数据成为最小(大)数据。重复该过程即可。对于n个数据的排序问题,共需要进行n-1趟排序过程。
#include<stdio.h>
void exchange(int *pa,int *pb)//交换两个数
{
int temp;
temp=*pa;
*pa=*pb;
*pb=temp;
}
void print_array(int array[],int size)//打印数组
{
int i;
for(i=0;i<size;i++)
printf("%d ",array[i]);
printf("\n");
}
void select_sort(int data[],int size)//用选择排序方法对数据进行从小到大排序
{
int i,j,min;
for(i=0;i<size;i++)
{
min=i;
for(j=i+1;j<size;j++)
if(data[min]>data[j])
min=j;
if(data[min]!=data[i])
exchange(&data[min],&data[i]);
}
}
int main(void)
{
int data[10]={19,23,55,21,43,22,10,90,65,46};//产生数据
print_array(data,10);//打印原始数据
select_sort(data,10);//对数据排序
print_array(data,10);//打印排序数据
}