#include <stdio.h>
#include "SelectSort.h"//选择排序
swap(int* x, int* y)
{
int temp = *x;
*x = *y;
*y = temp;
}
void SelectSort(SlSoDataType* a, int n)
{
int begin = 0;
int end = n - 1;
while (begin < end)
{
int mini = begin;
int maxi = begin;
for (int i = begin + 1; i <= end; ++i)
{
if (a[i] < a[mini])
mini = i;
if (a[i] > a[maxi])
maxi = i;
}
swap(a + begin, a + mini);
//max值在begin位置时会被换到mini处,需要去mini处找max值
if (begin == maxi)
maxi = mini;
swap(a + end, a + maxi);
++begin;
--end;
}
}
void PrintfArr(int* a, int n)
{
for (int i = 0; i < n; ++i)
printf(" %d ", a[i]);
printf("\n");
}
int main()
{
int a[] = {44, 3, 1, 2, 4, 23, 22, 11, 234, 1 };
int size = sizeof(a) / sizeof(a[0]);
SelectSort(a, size);
PrintfArr(a, size);
}