Sort-Selection Sort 选择排序

算法相关GitHub持续更新,欢迎打脸~

排序算法之选择排序

时间复杂度:O(n2)

空间复杂度:O(1)

是否稳定:不稳定 1

算法:

选择排序算法的运作如下:(从前往后)
第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;
第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;
以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。

Java实现如下

package prs.rfh.algorithm.sort;

/**
 * @author Swift
 * @version $Algorithm: SelectionSort, v 0.1 2017/1/9 10:29 Swift Exp $$
 */
public class SelectionSort {

    public static int[] SelectionSort(int [] array){
        if (array==null || array.length == 0)throw new IllegalArgumentException("参数非法");
        for (int i = 0; i < array.length-1; i++) {
            for (int j = i+1; j < array.length; j++) {
                if (array[i]>array[j]){
                    int temp = array[j];
                    array[j] = array[i];
                    array[i] = temp;
                }
            }
        }
        return array;
    }

}

【1】稳定性:

举个例子,序列5 8 5 2 9, 我们知道第一遍选择第1个元素5会和2交换,那么原序列中2个5的相对前后顺序就被破坏了,所以选择排序不是一个稳定的排序算法。</br>
<i>@author Swift</i>
<i>@date 2017-1-9</i>

    原文作者:FromThenOn
    原文地址: https://www.jianshu.com/p/1f42af458485
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞