首页 > 代码库 > 排序算法——直接选择排序

排序算法——直接选择排序

  直接选择排序每一趟排序都会从未排序的序列中选择出最小的元素来,然后跟未排序序列的第一个元素交换。这样经过n-1趟排序后,每趟排序选择出的

最小元素便成了有序的序列。

  算法实现如下:

#include <stdio.h>
#include <stdlib.h>

void SelectSort(int A[],int n)
{
    int i, j, index, temp;
    for(i = 0; i < n-1; i++)        // 进行n-1趟排序
    {
        index = i;                  // 辅助变量index用来存储最小元素的下标
        for(j = i+1; j <= n-1; j++) // 遍历未排序的序列
        {
            if(A[j] < A[index])
                index = j;
        }
        if(index != i)              // 将选择出的最小元素与未排序序列中的第一个元素交换
        {
            temp = A[index];
            A[index] = A[i];
            A[i] = temp;
        }
    }
}

  直接选择排序的时间复杂度为O(n2),空间复杂度为O(1)。直接选择排序同样是一种不稳定的排序算法(不稳定的排序算法有:快排、希尔排序、直接选择排序、堆排序)。

 

排序算法——直接选择排序