选择排序

#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;
    }
}

排序后结果:

排序后结果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容