数据结构和算法选择排序

Posted 羽觞醉月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构和算法选择排序相关的知识,希望对你有一定的参考价值。

选择排序

选择排序: 首先找到数组中最小的元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么就与它自己交换)。再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。这就是选择排序,因为它在不断的选择剩余元素中最小的。

结论: 对于长度为N的数组,选择排序需要大约N2/2次比较和N次交换。

特点:

  1. 运行时间与输入无关。为了找出最小的元素而扫描一遍数组并不能为下一遍扫描提供什么信息。这种性质在某些情况下是缺点,因为使用选择排序的人可能会惊讶的发现,一个已经有序的数组或是主键全部相等的数组和一个元素随机排列的数组所用的排序时间一样长。
  2. 数据移动是最少的。每次交换都会改变两个数组的元素的值,因此选择排序用了N次交换——交换次数和数组的大小呈线性关系。
 1 public static void sort(Comparable[] a) {
 2         //将a按升序排列
 3         int L = a.length;
 4         for (int i = 0; i < L; i++) {
 5             //最小值的下标初始为i
 6             int min = i;
 7             for (int j = i + 1; j < L; j++) {
 8                 //比较大小
 9                 if (a[min].compareTo(a[j]) > 0) {
10                     //将最小值的下标赋给min
11                     min = j;
12                 }
13             }
14             //将最小值的下标和“i”换位(最小值换位)
15             exch(a, i, min);
16         }
17 
18     }

 

以上是关于数据结构和算法选择排序的主要内容,如果未能解决你的问题,请参考以下文章

排序算法之冒泡选择插入排序(Java)

排序算法之冒泡选择插入排序(Java)

[数据结构]选择排序算法和希尔排序算法详解

[数据结构]选择排序算法和希尔排序算法详解

算法笔记 排序算法完整介绍及C++代码实现 HERODING的算法之路

Java数据结构—排序算法