排序算法
李大鸭
这个作者很懒,什么都没留下…
展开
-
给定以排序的数组,不重复打印数组中所有相加和为K的不降序二元组
给定以排序的数组,不重复打印数组中所有相加和为K的不降序二元组 例:arr = {-8,-4,-3,0,2,4,5,8,9,10},K = 10 输出(0,10)(2,8) 解法一: 暴力解法 每次定一个元素向后依次尝试看相加之和是否等于K 缺点:效率太低 解法二: 二分查找 求出数组和K的差值,再利用二分查找,看这个值是否在这个数组中 解法三:首尾指针 定义两个指针分别指向数组的第一个元素和最...原创 2019-11-11 22:21:01 · 609 阅读 · 0 评论 -
归并排序,你应该知道这些
前言 学过递归我们知道,将一个问题划分为许多子问题,通过求解子问题再合并子问题的解即可获得原问题的解。如果说快速排序重在如何划分子序列,,那么归并排序就是重在人如何合并子序列。 概述 归并排序算法将数组分为两半,对每部分递归地调用归并排序。在两部分排好序后,对它们进行合并。 基本思路 归并排序算法完全依照分治模式 1.分解:将n个元素分成各含n/2个元素的子序列 2.解决:对两个子序列递归地排序...原创 2019-11-11 14:03:30 · 127 阅读 · 1 评论 -
快速排序其实很简单
1.快速排序概述 快速排序在数组中选择一个基准值,将数组分为 两部分,第一部分的所有元素都小于或等于基准元素,第二部分都大于或等于基准元素,再分别对两部分递归调用排序算法 2.快速排序的基本步骤 1)找基准元素(以数组的第一个元素为例) 2)划分区域(使小的元素都在左边,大的元素都在右边) 3)递归调用排序算法 3.快速排序的划分区域算法 1)一遍单向扫描法 用两个指针sp和bigger将数组划...原创 2019-11-11 13:08:43 · 448 阅读 · 0 评论