首页 > 代码库 > 选择排序

选择排序

/* 选择排序 */void SelectionSort(int a[]) {    int i, j;    int MinVal ;    int MinX;    for (i = 0; i < 8; i++) { /* 选取n-1次最小元素 并进行交换 */        MinVal = 999999;        for (j = i; j < 9; j++) { /* 从未排好序的数组中选取最小的元素 */            if (a[j] < MinVal) {                MinX = j;                MinVal = a[j];            }        }        int t = a[i];        a[i] = a[MinX];        a[MinX] = t;    }}
最好 最坏 平均情况下的时间复杂度均为O(n^2)
选择排序是不稳定的 举个例子: 5 5 2 1 3
1. 2被选出来 和第一个5交换 于是2个5 的 相对位置发生了变化
故选择排序是不稳定的排序方法。

选择排序