#include<stdio.h>
#include<stdlib.h>
int main()
{
int i, j = 0;
int a[] = { 2,3,44,5,1,2,70,77,90,23,45,6,7,88,10,9 };
int n = sizeof(a) / sizeof(a[1]);
int temp=0;
printf("排序前数组为:\n");
for (i = 0; i <= n - 1; i++)
{
printf("%4d", a[i]);
}
//选择排序
for (i = 0; i < n - 1; i++)
{
for (j = i + 1; j < n; j++)
if (a[i] > a[j])
{
temp = a[j];
a[j] = a[i];
a[i] = temp;
}
}
printf("排序后数组为:\n");
for (i = 0; i <= n - 1; i++)
{
printf("%4d", a[i]);
}
return 0;
}
升级版的
不用每次都交换,每轮比到最后再交换
#include <stdio.h>
#include <stdlib.h>
void test_01()
{
// 选择排序
int arr[10] = {0, 10};
for (int i = 0; i < 10; i++)
{
arr[i] = rand();
}
for (int i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
if (i == 9)
{
printf("\n");
}
}
int min_index = 0;
int point = 0;
for (int s = 0; s < 10; s++)
{
min_index = s;
point = s;
for (int j = s + 1; j < 10; j++)
{
if (arr[j] < arr[point])
{
point = j;
}
if (arr[min_index] > arr[point])
{
int temp = arr[min_index];
arr[min_index] = arr[point];
arr[point] = temp;
}
}
}
for (int i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
if (i == 9)
{
printf("\n");
}
}
}
int main(int argc, char const *argv[])
{
test_01();
return 0;
}