算法
文章平均质量分 79
For_SHINee
安安稳稳,好好工作
展开
-
算法 —— 堆排序
堆排序与快速排序,归并排序都是时间复杂度为O(N*logN) 的排序方法。在学习堆排序之前,首先讲解一下数据结构当中的二叉堆。 图一 如图一所示,就是一个二叉堆。 二叉堆满足的特性为: 1、父节点的键值总是大于或等于(小于或等于)任何一个子节点的键值原创 2015-08-27 10:31:53 · 358 阅读 · 0 评论 -
算法——插入排序
原理: 把一个 数据 arr[i] 插入到 已经有序的 arr[0] ~ arr[i - 1] 当中。此时 arr[0] ~ arr[i - 1] 是已经排列好的,有序的数组。遍历 arr[0] ~ arr[i - 1] ,找到 相应的位置,将 arr[i] 插入到数组当中。 1、原始方法 NSInteger i , j , k; f原创 2015-08-27 10:29:15 · 264 阅读 · 0 评论 -
算法 —— 归并排序
原理: 归并排序是建立在归并操作上的一种排序算法,将两个(或两个以上)的有序表合成一个新的有序表,即把待排序列分为若干个子序列,每个子序列都是有序的。然后再把有序子序列合并为新的整体有序序列。 归并算法的核心:先分解,再合并。 如何让数组内的数据有序? 可以将A、B两组数据内部再进行数据分组,直到每个小组只有一原创 2015-08-27 10:30:32 · 414 阅读 · 0 评论 -
算法 —— 希尔排序
希尔排序是插入排序的进一步的展示方式。 1、原理:希尔排序将所有的元素分为若干个子序列,在这些子序列内部进行直接插入排序,然后再将子序列的内部元素数量减小,等到所有的待排元素的基本有序时,再将全体元素进行一次直接插入排序。 简单举例 现在我们有需要待排的10个数字,分别为:10,25,3,54,56,1,46,74,79,32。步长 为 10 /原创 2015-08-27 10:29:58 · 337 阅读 · 0 评论 -
算法——快速排序
快速排序是建立在冒泡排序的基础上升级的一种方式,排序的效率比较高,因此经常被使用。 对于快速排序来说,直接写出是有些难度的,可以用以下的方式来解释。 原理: 1、在一组数列中选择一个数a[n]作为基础数 2、进行分区,将比a[n] 大的数全部放在它的右边,比它小的数放原创 2015-08-27 10:32:47 · 376 阅读 · 0 评论 -
算法 —— 选择排序
原理: 选择排序和直接插入排序有些类似。都是有一个有序序列和无序序列。 区别在于: 选择排序是将无序区的最小值放到有序区的最后,插入排序则是将无序区的第一个值插入到有序区间当中。 1、假设整个数组的大小为n,从a[0 ~ i - 1]为有序区间,a[i ~ n-1 ]为无序区间 2、比较a[i ~ n-1]的所有元素,找出最小的元素,将其与a[i]交换,这原创 2015-08-27 14:53:49 · 409 阅读 · 0 评论 -
算法——冒泡排序
1、冒泡排序 原理:1、冒泡排序就是取出第n个数字,然后和 第n + 1 个数字相比较,如果arr[n] > arr[n + 1],则调换两个的位置 2、直到 n = 数组总数量 - 1 , 完成对于数组的遍历,保证最大的数据放到最后的位置。 3、n ++ ,直到 n = 数组总量 - 1,否则重复前两步 事例:原创 2015-08-27 10:25:47 · 362 阅读 · 0 评论