选择排序,是根据第一个数依次和后面的每个数比较,每次比较把小的数调到前面,通过这个,可以把最小的数掉到最前。
第二轮第二个数依次和后面的数比较,每次比较把小的数调到前面,通过这个,可以把最小的数掉到最前。
通过(n-1)轮,就可以按从小最大排序了。同理也可以把最大的放在前面。代码如下:
#include <stdio.h>
void swap(int* arr,int sz)
{
int i = 0;
for (i = 0; i < sz-1; i++) //进行n-1 轮比较
{
int j = 0;
for (j = i+1; j<sz; j++) //每次依次比较第一个数和后面的数,每一轮少比较一个最前面的数
{
if (arr[i]>arr[j]) //把小的调到前面
{
int tmp = 0;
tmp = arr[i];
arr[i] = arr[j ];
arr[j] = tmp;
}
}
}
}
int main()
{
int arr[] = { 5, 2, 1, 6, 8, 11, 14, 17, 43, 57, 34, 22 };
int sz = sizeof(arr) / sizeof(arr[0]);
int i = 0;
int j = 0;
swap(arr, sz);
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]); //依次打印每个数字
}
return 0;
}