【9】算法排序 (选择排序)

思想:

每次选取最小或最大的数放在已排序的集合后面

 

完整代码

#include <stdio.h>

void PrintSort(int * a, int n)
{
        printf("\n");
        int i = 0;
        for(i=0; i<n; i++) {
                printf(" %d ", a[i]);
        }
        printf("\n");
}

void swap(int * a, int * b)
{
        int t = *a;
        *a = *b;
        *b = t;
}

// 每次选取最小或最大的数放在已排序的集合后面
void SelectSort(int * a, int n)
{
        int i, j, min;
        for (i=0; i<n; i++) {
                min = i;        // 设置最小值为第一个数 
                for(j=i+1; j<n; j++) {
                        if (a[j] < a[min]) {
                                min = j;
                        }
                }
                swap(&a[min], &a[i]);
        }
}

void main()
{
        int a[8] = {9, 2, 1, 3, 8, 4, 7, 6};
        SelectSort(a, 8);
        PrintSort(a, 8);
}

 

posted @ 2020-08-31 15:57  欧阳图图的少年成长记  阅读(161)  评论(0编辑  收藏  举报