#include <stdio.h>
int findMaxPos(int arr[], int n);//该函数用于定位最大值的位置
void selectionSort(int arr[], int n);//该函数用于交换最大值的位置
int main(void)
{
int arr[9] = {5, 8, 9, 7, 6, 1, 2, 4, 3};
selectionSort(arr, 9);//对数组进行排序
for(int i = 0; i < 9; i++)
printf("%d\n", arr[i]);
return 0;
}
int findMaxPos(int arr[], int n)
{
int max = arr[0];
int pos = 0;//保存最大值的索引
for(int i = 0; i < n; i++)
if(arr[i] > max)
{
max = arr[i];
pos = i;
}
return pos;//返回最大值的索引
}
void selectionSort(int arr[], int n)//选择排序
{
while(n > 1)
{
int pos = findMaxPos(arr, n);//保存最大值的索引
int temp = arr[pos];//保存最大值给临时变量
/*把最大值和末尾的数组元素交换位置*/
arr[pos] = arr[n - 1];
arr[n - 1] = temp;
n--;//索引前移
}
}
网友评论