排序算法
qq_45727976
这个作者很懒,什么都没留下…
展开
-
蛮力法和分治法求解逆序数
问题描述给定一个随机数数组,求取这个数组中的逆序对总个数。要求时间效率尽可能高。那么,何为逆序对?设 A 为一个有 n 个数字的有序集 (n>1),其中所有数字各不相同。如果存在正整数 i, j 使得 1 ≤ i < j ≤ n 而且 A[i] > A[j],则 <A[i], A[j]> 这个有序对称为 A 的一个逆序对,也称作逆序数。例如,数组(3,1,4,5,2)的逆序对有(3,1),(3,2),(4,2),(5,2),共4个。解决方案蛮力法,使用蛮原创 2020-10-21 22:37:25 · 2646 阅读 · 0 评论 -
快速排序
快速排序快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R.Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。这是一种二分法思想,每次将整个无序序列一分为二,归位一个元素,对两个子序列采用同样的方式进行排序,直至子序列长度为1或0为止快速排序的分治策略分解原创 2020-10-14 11:15:16 · 282 阅读 · 0 评论 -
归并排序-自底向上的归并排序算法
归并排序归并排序(Merge Sort)是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。算法描述分解: 将原序列分解成length长度的若干子序列求解子问题: 将相邻的两个子序列调用Merge算法合并成一个有序子序列合并: 由于整个序列存放在数字a中,排序过程是就地进行的,合并步骤不需要执行原创 2020-10-13 20:45:38 · 2593 阅读 · 1 评论