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

Posted 称霸西关一条街

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序算法——直接选择排序相关的知识,希望对你有一定的参考价值。

  直接选择排序每一趟排序都会从未排序的序列中选择出最小的元素来,然后跟未排序序列的第一个元素交换。这样经过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)。直接选择排序同样是一种不稳定的排序算法(不稳定的排序算法有:快排、希尔排序、直接选择排序、堆排序)。

 

以上是关于排序算法——直接选择排序的主要内容,如果未能解决你的问题,请参考以下文章

排序算法系列1--简单排序(选择,冒泡,直接插入)

七大排序算法(插排,希尔,选择排序,堆排,冒泡,快排,归并)--图文详解

排序算法

快速排序/快速选择算法

算法2 排序算法:直接选择排序和堆排序

常见排序算法基本原理及实现(快排,归并,堆排,直接插入.....)