简单选择排序

点击查看代码
#include<iostream>
using namespace std;

//简单选择排序(升序排序)
void SelectSort(int a[], int n) { 
    //i是有序区末尾位置(在升序排序中,a[i]是有序区的最大元素),j是无序区起始位置,min是最小元素的位置
    int i, j, min;
    //每轮将无序区最小的元素移动至有序区末尾
    for (i = 0; i < n; i++) { 
        min = i; //每轮扫描开始时,以有序区中最大元素a[i]作为比较基准
        for (j = i + 1; j < n; j++) { //无序区扫描范围[i+1,n-1]
            if (a[min] > a[j]) { //找出无序区中最小元素的位置
                min = j;
            }
        }        
        if (min != i) { //若无序区中有最小元素存在(min不等于i),则互换a[min]和a[i]
            int temp = a[i];
            a[i] = a[min];
            a[min] = temp;
        }
    }
}

int main() {
    int a[] = { 80,30,60,40,20,10,50,70 };
    int n = (sizeof(a)) / (sizeof(a[0]));
    cout << "序列个数:" << n << endl;
    cout << "排序前:";
    for (int i = 0; i < n; i++) {
        cout << a[i] << " ";
    }
    cout << endl;
    SelectSort(a, n); //简单选择排序
    cout << "排序后:";
    for (int i = 0; i < n; i++) {
        cout << a[i] << " ";
    }
    cout << endl;
    return 0;
}
posted @ 2022-09-25 20:37  zhaoo_o  阅读(7)  评论(0编辑  收藏  举报