排序算法之二元选择排序

来源:互联网 发布:ubuntu git 支持中文 编辑:程序博客网 时间:2024/06/05 06:10

#include "stdafx.h"

void SelectSort(int a[], int n);

void PrintSort(int a[], int n, int i);

int _tmain(int argc, _TCHAR* argv[])

{

    int a[8] = { 3, 1, 5, 7, 2, 4, 9, 6 };

    SelectSort(a, 8);

    PrintSort(a,8,8);

    getchar();

    return 0;

}

void PrintSort(int a[], int n, int i)

{

    std::cout << i << ":";

    for (int j = 0; j<n; j++){

        std::cout << a[j] << " ";

    }

    std::cout << std::endl;

}


void SelectSort(int a[], int n)

{

    int i;

    for (i = 0; i <= n / 2; i++){ // i从0开始,不然第一个数据,就没有参与比较

        int min = i;

        int max = n - i - 1;//最大数据指针应该这么设置吧!

        int tmp = 0;

        int j;

        for (j = i + 1; j<n - i - 1; j++){

            if (a[j]<a[min]){

                min = j;

                continue;

            }

            if (a[j]>a[max]){

                max = j;

            }

        }

        //放置最小值

        tmp = a[min];

        a[min] = a[i];

        a[i] = tmp;

        //放置最大值

        tmp = a[max];

        a[max] = a[n - i - 1];

        a[n - i - 1] = tmp;

    }

}

0 0
原创粉丝点击