选择排序

2020-04-21  本文已影响0人  psh_11
#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--;//索引前移
    }
}
上一篇 下一篇

猜你喜欢

热点阅读