//选择排序
#define _CRT_SECURE_NO_WARNINGS 1
//选择排序
#include<stdio.h>
void swap(int* x, int* y)//交换两个数值 需要指针来操作
{
int tmp;
tmp = *x;
*x = *y;
*y = tmp;
}
void selectsort(int arr[], int sz)
{
int i, j, imins;
for (i = 0; i < sz; i++)//在数组中选择第一个作为暂定最小的值 第二个 第三个以此类推
{
imins = i;
for (j = i + 1; j <= sz - 1; j++)//找真正最小的值并从已排好序的后一个开始找
{
if (arr[j] < arr[j - 1])//如果后面的值小于前面的值就imins换小标 直到找到真正的最小值下标
{
imins = j;
}
}
if (imins != i)//交换最小值与暂定最小值
swap(&arr[i], &arr[imins]);
}
}
int main()
{
int i, arr[] = { 10,9,8,7,6,5,4,3,2,1,0,-1 },sz;
sz = sizeof(arr) / sizeof(arr[0]);//求数组要排序的个数
selectsort(arr, sz);//调用选择排序函数代码
for (i = 0; i < sz; i++)//遍历数组
{
printf("%d ", arr[i]);
}
return 0;
}