经典排序算法(6)——直接选择排序算法详解

来源:互联网 发布:金税盘开票软件更新 编辑:程序博客网 时间:2024/06/04 00:50

直接选择排序(Straight Select Sort)是一种典型的选择排序算法,通过不断选择序列中最大(小)的元素。


一、算法基本思想

(1)基本思想

直接选择排序的基本思想就是:不断从未排序队列中选择最大(小)的元素放到已排序队列队尾,直至所有元素都排好序。

(2)运行过程

直接选择排序算法的运作如下:

1、首先在原始序列中找到最小(大)元素,存放到排序序列的起始位置

2、再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

3)重复第二步,直到所有元素均排序完毕。


(3)示例


二、算法实现(核心代码)

C++实现:

void selection_sort(int arr[], int len){  int i, j, min;  for (i = 0; i < len - 1; i++)   {     min = i;     for (j = i + 1; j < len; j++)        if(arr[min] > arr[j])       min = j;     swap(arr[i], arr[min]);  }}

Java实现:

public void selection_sort(int[] arr) {int i, j, min, temp, len = arr.length;for (i = 0; i < len - 1; i++) {min = i;for (j = i + 1; j < len; j++)if (arr[min] > arr[j])min = j;temp = arr[min];arr[min] = arr[i];arr[i] = temp;}}

三、性能(算法时间、空间复杂度、稳定性)分析

直接选择排序平均时间复杂度为O(n^2);空间复杂度为O(1);是不稳定的排序算法

原始序列: 21,25,49,25*,16,08
排序后:08,16,   21,25*,25,49
两个25的位置变化了,所以是不稳定的。


1 0
原创粉丝点击