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

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

一、算法基本思想

(1)基本思想

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

(2)运行过程

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

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

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

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

(3)示例

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


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

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的位置变化了,所以是不稳定的。


    原文作者:排序算法
    原文地址: https://blog.csdn.net/guoweimelon/article/details/50904224
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞