NSGA 2 使用了随机快速排序算法。
C. A. R. Hoare在1962年为了改进冒泡排序算法提出快速排序(Quicksort)算法。其基本思想是递归、分治。其时间复杂度为Ο(n log n),最差时间复杂度为Ο(n^2)。
算法的基本流程为:首先根据队列中元素的大小分割为两组,其中一组的所有元素都比另一组中的元素小;然后再分别对这两组数据重复执行分割操作。
快速排序伪代码如下:
QUICKSORT(A,left,right)
if left >= right return;
choose one element as Pivot
遍历队列中所有元素,将小于Pivot放到第一组,将不小于Pivot的元素放到第二组。
分别对这两组应用QUICKSORT排序。
网上有很多关于快速排序算法的分析资料。这里仅以一个小例子演示一下分组操作。
现有一组随机数据如下所示:
20 2 39 21 71 2 77 44 39 33