选择排序,需要每次在未排序的数组中找到最小元,然后与有序部分的最大值交换,在一个for循环中,简单的扫描获取最小元,复杂度为O(n²);因此,想办法优化获取最小元的部分,用最小堆,于是优化为堆排序;
在排序过程中,使用最小堆需要新开辟一个数组用于存放临时拍好的部分数组,排好后再导回原始的数组输出,浪费了O(n)空间;
改进:使用最大堆,把根节点的最大元素调整到最后一个节点,然后堆的规模减1;
选择排序,需要每次在未排序的数组中找到最小元,然后与有序部分的最大值交换,在一个for循环中,简单的扫描获取最小元,复杂度为O(n²);因此,想办法优化获取最小元的部分,用最小堆,于是优化为堆排序;
在排序过程中,使用最小堆需要新开辟一个数组用于存放临时拍好的部分数组,排好后再导回原始的数组输出,浪费了O(n)空间;
改进:使用最大堆,把根节点的最大元素调整到最后一个节点,然后堆的规模减1;