美文网首页
排序算法——选择排序

排序算法——选择排序

作者: 令狐蛋挞 | 来源:发表于2017-07-22 22:27 被阅读0次

    原理

    数据分为 有序 | 无序两个部分。以升序为例, 遍历未排序部分,找到最小值,加到有序末尾。重复该过程,直到有序部分等于数据源长度。

    复杂度分析

    平均时间复杂度为O(n^2)
    时间复杂度最坏为O(n^2)
    空间复杂度为 O(1)
    不稳定

    代码实现

    public void sort(List<V> srcList, Comparator<V> comparator) {
            if (srcList == null || srcList.size() <= 2) {
                return;
            }
            V min = null;
            V element = null;
            int minIndex = 0;
            for (int index = 0; index < srcList.size(); index++) {
                for (int j = index; j < srcList.size(); j++) {//找到最小值
                    element = srcList.get(j);
                    if (min == null || comparator.compare(element, min) < 0) {
                        minIndex = j;
                        min = element;
                    }
                }
    
                V temp = srcList.get(index);
                srcList.set(index, min);//最小值加到有序末
                srcList.set(minIndex, temp);
                min = null;
            }
        }
    

    相关文章

      网友评论

          本文标题:排序算法——选择排序

          本文链接:https://www.haomeiwen.com/subject/wkcpkxtx.html