美文网首页
2018-02-07 选择排序-思考比较

2018-02-07 选择排序-思考比较

作者: klaaay | 来源:发表于2018-02-07 19:59 被阅读0次

我的代码:

void choose(int *a, int n) {
    int i, j, min, temp;
    int k = 1;
    for (i = 1; i < n; i++) {
        min = a[k];
        for (j = i; j <= n; j++) {
            if (a[j] < min) {
                temp = a[j];
                a[j] = min;
                min = temp;
            }
        }
        temp = min;
        min = a[k];
        a[k] = temp;
        k = k + 1;
    }
}

答案代码:

void selection_sort(int *a,int n){
    int i,j,temp,min;
    for(i = 1; i< n;i++){
        min = i;
        for(j = i+1; j <= n;j++){
            if(a[j] < a[i]){
                min = j;
            }
        }
        temp = a[i];
        a[i] = a[min];
        a[min] = temp;
    }
}

差异及总结:
①保存数组中的有些数值无需一定要记录这个数字,有时候仅需保存该数字的下标即可
②学会充分利用循环中的i,j这样的变量,有时候无需向我一开始自己算法中一样申请一个多余的变量k

我对选择排序的理解:
选择排序是一个不断寻找该数组中最小(最大)值的过程,将第i次寻找出的最小(大)值与array[i]交换位置,注意剩下最后一个数字的时候无需再找,该剩下的数一定是该数组中最大(小)的数,因为该算法的原理,array[length-1]是你在array[length-1]和array[length]中找出的较小值。

时间复杂度和空间复杂度:
空间:
O(1) 没有申请其他需要的空间
时间:
最好情况和最坏情况下的差别在于是否执行min = j这行代码,不会影响其最大次方项,以及交
换算法也只影响n这个项数的大小,不影响最大项数大小
该算法两层for循环的第二次大致为1+2+3+....+n-1的累加,由等差数列求和可知其时间复杂度
为O(n^2)
查阅相关资料:
最好情况为sorted (n−1)((n+2)/2+4)
最坏情况为reversed (n−1)(n+6)

至于该排序方法稳定与否,看最坏和最好都是O(n^2),这样应该算是稳定了吧?

相关文章

  • 2018-02-07 选择排序-思考比较

    我的代码: 答案代码: 差异及总结:①保存数组中的有些数值无需一定要记录这个数字,有时候仅需保存该数字的下标即可②...

  • 图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序

    图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序 图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序

  • 选择排序和冒泡排序

    规则:比较大小,位置交换 选择排序:数组中的每个元素都进行比较 冒泡排序:数组中相邻元素进行比较 选择排序 for...

  • 排序算法

    排序算法 非线性时间比较类排序 交换排序 冒泡排序 快速排序 插入排序 插入排序 希尔排序 选择排序 简单选择排序...

  • 排序算法(二)

    一.选择排序 二.冒泡排序 三.快速排序 四.算法比较

  • 排序算法篇_选择排序法

      选择排序(Selection Sort)也是比较简单的排序算法,思路也比较直观。选择排序算法在每一步中选取最小...

  • 排序算法(dart实现)

    排序算法 [toc] 10大经典排序比较 冒泡、选择、插入、归并、快速、希尔、堆排序,属于比较排序(Compari...

  • 常用排序算法(Python实现), 持续更新中

    一、非线性时间比较类排序 交换排序冒泡排序快速排序 插入排序简单插入排序希尔排序 选择排序简单选择排序堆排序 归并...

  • 选择排序算法

    选择排序(Selection Sort)算法也是比较简单的排序算法,其思路比较直观。选择排序算法在每一步中选取最小...

  • 七大排序

    阅读目录 分类及比较冒泡排序快速排序选择排序插入排序希尔排序归并排序堆排序 1.分类及比较 2.冒泡排序 基本思想...

网友评论

      本文标题:2018-02-07 选择排序-思考比较

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