当前位置: > 财经>正文

选择排序为什么是不稳定的? 债券型基金稳不稳定的原因是什么

2023-07-28 00:39:38 互联网 未知 财经

选择排序为什么是不稳定的?

文章目录 选择排序是什么?:为什么说选择排序是不稳定的呢?

选择排序是什么?:

选择排序(Selection sort):

是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法

可以将数组分为两个部分,有序和无序。刚开始有序为空。每次从无序的队列中选出最小(最大)的数放在有序的队尾。

如下图: 总共需要比较n-1次

第一次选出5,放在第一个。 第二次选出8,放在有序的队尾。 ······

为什么说选择排序是不稳定的呢?

稳定性:(来自百度百科)

选择排序是给每个位置选择当前元素最小的,比如给第一个位置选择最小的,在剩余元素里面给第二个元素选择第二小的,依次类推,直到第n-1个元素,第n个元素不用选择了,因为只剩下它一个最大的元素了。那么,在一趟选择,如果一个元素比当前元素小,而该小的元素又出现在一个和当前元素相等的元素后面,那么交换后稳定性就被破坏了。

举个例子,序列arr = [5 8 5 2 9],我们知道第一遍选择第1个元素5会和2交换,那么原序列中两个5的相对前后顺序就被破坏了,所以选择排序是一个不稳定的排序算法。

简单地说就是所有相等的数经过某种排序方法后,仍能保持它们在排序之前的相对次序,我们就说这种排序方法是稳定的。反之,就是非稳定的。

最后附上代码:

//比较n-1次 for (int i = 0;i if (min > arr[j]){ //将最小值赋给变量 minIndex = j ; min =arr[j]; } } //当循环遍历完成后,如果最小值的索引不是无序队列的第一个元素,就将其和最小值进行交换 if (minIndex!=i){ arr[minIndex] = arr[i]; arr[i] = min; } }

版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。