05 2017 档案

摘要:思路 1. 分解(将一个数组拆分成两个数组) 2. 合并(将两个有序的数组合并成一个有序的数组,借助一个辅助数组) 代码 c include // 将arr[l...mid]和arr[mid+1...r]两部分进行归并 void __merge(int arr[], int l, int mid, 阅读全文
posted @ 2017-05-16 11:39 郑闯 编辑
摘要:思路 希尔排序是插入排序的改进版本 起本质还是插入排序,只不过多了分组 按照分组进行一个个小的插入排序 利用插入排序对近乎有序的序列排序的高效性的特性 写法 1. 先写一个简单的插入排序 2. 在第二层循环设置步长 代码 c include void shell_sort(int arr[],i 阅读全文
posted @ 2017-05-16 00:12 郑闯 编辑
摘要:思路 前面和 "快速排序1" 的思想大致一样 1. 找一个基准数先将数组分成三部分(小于基准数部分,基准数,大于基准数部分)再进而递归 2. 区别在于for循环部分 3. 设置一个i,将小于基准数p的部分放在arr[l+1,j]中,将大于基准数p的部分放在arr[j+1,r]中 4. 即判断arr[ 阅读全文
posted @ 2017-05-15 22:47 郑闯 编辑
摘要:基本思想: 1. 从序列当中选择一个基准数(pivot),我们选择第一个数为基准数。 2. 先设置一个哨兵j,从右向左找到比基准数小的数 3. 再设置一个哨兵i,从左往右找到比基准数大的数(i不能大于j) 4. 如果i void _quick_sort(int arr[],int l,int r){ 阅读全文
posted @ 2017-05-15 21:34 郑闯 编辑
摘要:递归的写法 1. 写下只有一次递归的时候要做哪些事情并将其封装成单个函数dosome() 2. 写下判断语句,在什么情况下重复递归调用 示例代码 阅读全文
posted @ 2017-05-15 20:13 郑闯 编辑
摘要:思想 每一轮选择出数组中最小的,最后与这一轮的第一个数交换位置 代码 c include int select_sort(int arr[],int n){ for (int i=0; i 阅读全文
posted @ 2017-05-15 19:13 郑闯 编辑
摘要:思想 把待排序的纪录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的纪录插入完为止,得到一个新的有序序列。 设无序数组为a[0…n 1]。 1. 初始时,a[0]自成1个有序区,无序区为a[1..n 1]。 2. 令i=1,将a[i]插入当前的有序区a[0…i 1]中形成a[0…i 阅读全文
posted @ 2017-05-15 18:10 郑闯 编辑
摘要:冒泡排序的实现原理很简单 1. 右边的数值大于左边,则进行交换 2. 每次遍历一定会确定一个最大值 3. 对于长度为n的数组,只需要进行(n 1)次遍历 实现代码 c include void bubble_sort(int a[], int n) { int i, j, temp; for (j 阅读全文
posted @ 2017-05-15 14:25 郑闯 编辑
摘要:类型检测常用三种方法 1. typeof 2. instanceof 3. Object.prototype.toString.apply() 一、typeof 适用于基本类型以及function检测,遇到null失效 二、instanceof 适合自定义对象,也可用来检测原生对象,在不同的ifra 阅读全文
posted @ 2017-05-14 22:35 郑闯 编辑
摘要:```js 搞事 取消 ``` 阅读全文
posted @ 2017-05-14 19:59 郑闯 编辑
摘要:废话不多少,直接上代码 第一种 第二种 第一种和第二种方法同一对象只能添加一个事件 第三种 仅IE8及以下版本支持 此种方法可以为同一对象添加多个事件 第四种 注意此种方法不支持IE8及其以下版本 此种方法可以为同一对象添加多个事件 反正我就爱用第四种,你们爱咋滴咋滴 阅读全文
posted @ 2017-05-14 19:38 郑闯 编辑
摘要:"原文" 求给定数组的全排列。 如: 输入: 3,4,5 输出: 3 4 5 3 5 4 4 3 5 4 5 3 5 4 3 5 3 4 思路: 1. 首先看最后两个数4, 5。 它们的全排列为4 5和5 4, 即以4开头的5的全排列和以5开头的4的全排列。 由于一个数的全排列就是其本身,从而得到以 阅读全文
posted @ 2017-05-09 22:19 郑闯 编辑

点击右上角即可分享
微信分享提示