/* 选择排序算法的思路: 1从当前待排序的元素中,找到最小(最大)的元素,存放到数组的起始位置。
2从剩余待排序的元素中,继续找当前最小(最大)的元素,存放到有序序列的尾部。 选择排序算法的时间复杂度为 N*N
选择排序算法在进行一次排序后都有一个元素确定其最终位置。
*/
#include <stdio.h>
#include <stdlib.h>
int SelectSort(int *a, int n)
{
if(a == NULL)
{
return -1;
}
int MinIndex = 0, i, j;
for(i = 0; i < n-1; i++)
{
MinIndex = i;
for(j = i + 1; j < n; j++ )
{
if(a[MinIndex] > a[j])
{
MinIndex = j;
}
}
if(MinIndex != i)
{
a[MinIndex] = a[MinIndex]^a[i];
a[i] = a[MinIndex]^a[i];
a[MinIndex] = a[MinIndex]^a[i];
}
}
return 0;
}
/*
函 数 名:Printf
函数功能:输出数组中的数据
输 入:待输出的数组
输 出:无
*/
void Printf1(int *p,int n)
{
if(p == NULL)
{
exit(1);
}
int i = 0;
for(i = 0;i<10;i++)
{
printf("%d\t",p[i]);
}
}
int main(){
int a[10] = {3,5,2,1,7,8,9,6,11,10};
int num = sizeof(a)/sizeof(a[0]);
SelectSort(a,num);
Printf1(a,num);
system("pause");
return 0;
}