1.思路:
<1> 整体分析:
<2> 特殊情况:
begin = maxi
2.代码实现
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void Swap(int *a, int *b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
void SelectSort(int*a, int n)
{
int begin = 0;
int end = n - 1;
int i = 0;
while (begin < end)
{
int maxi = begin;
int mini = begin;
for (i = begin+1 ; i <= end; i++)
{
if (a[i]>a[maxi])
{
maxi = i;
}
if (a[i] < a[mini])
{
mini = i;
}
}
Swap(&a[begin], &a[mini]);
if (begin == maxi)
{
maxi = mini;
}
Swap(&a[end], &a[maxi]);
begin++;
end--;
}
}
void Printf(int *a, int n)
{
int i = 0;
for (i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
}
int main()
{
int a[10] = { 4, 2, 6, 1, 3, 9, 7, 8, 0, 5 };
int n = sizeof(a) / sizeof(int);
SelectSort(a, n);
Printf(a, n);
return 0;
}