C语言数据结构

选择排序

2017-09-11  本文已影响0人  tingshuo123
#include <stdio.h>
void SelectionSort(int a[], int size);

int main(void)
{
    int arr[] = {1, -3, 5, 0, 9 ,6, 4};
    SelectionSort(arr, sizeof(arr)/sizeof(arr[0]));

    unsigned int i;
    for (i=0; i<sizeof(arr)/sizeof(arr[0]); i++){
        printf("%d ", arr[i]);
    }
    printf("\n");
    return 0;
}

void SelectionSort(int a[], int size)
{
    int i, j;
    // 每次循环后将第 i 小的元素放好
    for (i=0; i<size-1; i++){
        int min_idx = i;
        // 用来记录从第 i 个到第 size-1 个元素中,最小的那个元素的下标
        for (j=i+1; j<size; j++){
            if (a[j] < a[min_idx]){
                min_idx = j;
            }
        }
        // 将第 i 小的元素放在第 i 个位置上,并将原来占着第 i 个位置的元素挪到后面
        int tmp = a[i];
        a[i] = a[min_idx];
        a[min_idx] = tmp;
    }
}

排序后结果:

排序后结果
上一篇 下一篇

猜你喜欢

热点阅读