排序
draper__QYT
青年时我有一个梦想,从改变我自己开始
展开
-
(二)几种排序算法的学习总结(归并排序)
(三)归并排序归并排序核心思想:将数组的元素不断二分(N个元素就有logN个层级),再向上归并(时间复杂度为O(n))(递归)。 途径:开辟一块相同大小的临时空间进行操作,使用三个索引分别表示:归并过程中跟踪的位置(k),两个表示两个子数组当前的元素(left、right),用middle表示中间位置//将arr[l...mid]和arr[mid+1...r]两部分进行归并 template<t原创 2017-09-14 20:19:04 · 521 阅读 · 0 评论 -
(一)几种排序算法的学习总结(选择排序与插入排序)
几种排序的学习总结(一)选择排序选择排序:在每次循环中找出最小的元素,将其移至开头,第二次找出次小元素,将其移至第二位,以此类推//泛型函数模板template<typename T>void selectionSort(T arr[],int n){//分别存放待排序的数组、数组元素个数 for(int i=0;i<n;i++){ int minIndex=i; /原创 2017-09-14 15:08:36 · 631 阅读 · 0 评论 -
(三)几种排序算法的学习总结(快速排序)
快速排序:“二十世纪最伟大的算法” 基础快速排序实现双路快速排序实现三路快速排序实现核心思想:每次从数组中选择一个元素作为基点,之后把该元素移动到排好序时应该所处的位置,使得基点之前的元素都小于它、之后的元素都大于它。之后对小于它、大于它的子数组分别递归进行快速排序 将元素移动到合适位置的函数:Partition原创 2017-09-16 08:42:30 · 466 阅读 · 0 评论 -
堆排序实现
Heapify: 对于一个完全二叉树,第一个非叶子节点的索引是完全二叉树的元素个数除2得到的值原创 2017-09-17 20:39:39 · 226 阅读 · 0 评论