美文网首页
选择排序法

选择排序法

作者: Gavin黄炯鹏 | 来源:发表于2019-04-11 14:34 被阅读0次
  • 算法思路
    对于大小为n的数组a,分已排序区域A (a[0, m-1]) 和未排序区域B a[m, n-1],其中m为已排序元素个数。
    找出B的最小元素位置,然后和B的第一个元素位置交换位置,m自增1。当m等于n-1时,算法结束。
  • 算法疑问
    暂无。
  • 算法分析
    • 是否是稳定排序算法
      不是。
    • 是否是原地排序算法?
      是的。
    • 空间复杂度
      因为是原地排序算法,所以是O(1)。
    • 时间复杂度
      设m为查找最小元素的次序(m属于[1, n-1]),则有
      t(m)min = C
      t(m)max = n - m
      T(n) = t(1) + ... + t(n-1)
      则有
      T(n)min = (n-1)C, 即O(n)
      T(n)max = 1 + ... + n-1 = n(n-1)/2 即 O(n2)
      
  • 算法实现
    public void sort() {
        for (int i = 0; i < getSize()-1; i++) {
            int minIndex = findMostMin(i);
            int temp = data[i];
            data[i] = data[minIndex];
            data[minIndex] = temp;
        }
    
    }
    
    public int findMostMin(int start) {
        int minIndex = start;
        int min = data[start];
        for ( ; start < getSize(); start ++) {
            if (min > data[start]) {
                min = data[start];
                minIndex = start;
            }
        }
        return minIndex;
    }
    

相关文章

  • 各种排序方法

    冒泡排序法 选择排序法 链表排序法 qsort()函数排序法

  • 排序算法

    排序算法分类 排序算法常用主要有:冒泡排序法、快速排序法、选择排序法、插入排序法、堆排序法、归并排序法等几种。 ...

  • iOS常见算法

    升序算法:用冒泡排序法 选择排序法 快速排序

  • 排序算法总结

    选择排序法 插入排序法 冒泡排序法 归并排序法 自顶向下 自底向上 快速排序法 单路快速排序法 双路快速排序法 三...

  • php实现几种常见的排序方法

    1. 冒泡排序法: 2. 选择排序法: 3.插入排序法: 4.快速排序法:

  • 常用的排序算法

    1. 冒泡排序: 2.快速排序法 3.插入排序法 4.选择排序法 5.归并排序法

  • js 常见排序算法(快速排序,选择排序等)

    快速排序法 选择排序 插入排序 冒泡排序

  • 排序方法之选择排序法

    上次,我们介绍了排序方法中的冒泡排序法,今天我们来介绍另一个比较重要的排序方法---选择排序法。 选择排序法,顾名...

  • PHP常见排序算法学习

    题记: 常见的排序算法有:冒泡排序法,快速排序法,选择排序法,插入排序法,此处作为自己最近面试准备进行的学习笔记,...

  • 算法-选择排序

    算 法:选择排序算法时间复杂度: 选择排序算法概述 选择排序伪代码 选择排序实现 选择排序算法概述 排序算法有许...

网友评论

      本文标题:选择排序法

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