算法4 1.排序 选择排序: 每次获取最大的数,交换位置 插入排序: 把数字插入有序数组中 希尔排序: 有间隔并且间隔递减的 归并排序: 归并: 两个有序数组的合并成新的有序数组 ... ...
分类:
编程语言 时间:
2019-04-01 10:25:48
阅读次数:
135
打印九九乘法表 4. (1)求两个有序数组的公共元素 (3)求n个有序数组的公共元素。 5. 求数组的最大值和次大值。 5. 给定一个n个整型元素的数组a,其中有一个元素出现次数超过n / 2,求这个元素。 6. 给定一个含有n个元素的整型数组,找出数组中的两个元素x和y,使得abs(x y)值最小 ...
分类:
编程语言 时间:
2019-03-30 18:42:19
阅读次数:
195
题设:有两个有序数组A1和A2,内存在A1的末尾有足够的空间容纳A2,请实现一个函数,把A2中的所有的数字插入到A1中,并且保持所有的数字是有序的。 1.解题思路: 1、计算两个数组有效值合并后有效长度。 2、设置三个指针,(p,q,k),一个指向A1已初始化末尾,A2以初始化末尾, A1 + le ...
分类:
编程语言 时间:
2019-03-29 17:26:02
阅读次数:
171
[TOC] 题目描述: 给定一个只包含小写字母的有序数组 和一个目标字母 ,寻找有序数组里面比目标字母大的最小字母。 数组里字母的顺序是循环的。举个例子,如果目标字母 并且有序数组为 ,则答案返回 。 示例: 注意: 1. 长度范围在 区间内。 2. 仅由小写字母组成,最少包含两个不同的字母。 3. ...
分类:
其他好文 时间:
2019-03-29 10:34:55
阅读次数:
164
遇到“有序”数组中查找元素类的题,优先考虑折半查找(二分查找)做法核心是利用所定义的下标left和right与mid(由计算得来)下标的比较来逐渐缩短查找范围,达到一个阈值后即为找到。源代码如下:#include<stdio.h>#include<stdlib.h>intsearch(inta[],intx,intleft,intright)//定义二分查找函数{while
分类:
编程语言 时间:
2019-03-28 11:12:06
阅读次数:
192
C语言的二分法,想必很多朋友都在初学时是一个难啃的骨头,因为这是必须掌握的最基础的一种算法。在这里我分享一下这个简单的#二分法#查找有序数组#include<stdio.h>intbinary_search(intarr[],intkey,intleft,intright){while(left<=right){intmid=left+(right-left)/2;if(a[mi
分类:
编程语言 时间:
2019-03-28 00:32:35
阅读次数:
199
一、基本的归并排序 归并排序分为"分治"和"归并"两个阶段: 分治 : 其中分治采用的是递归的思想将待排序的数组分为越来越小的子数组,直到子数组只有单个元素(将单个元素看做有序数组):过程如图: 上图所示的分治过程,用代码实现: 归并:归并是将已经排好序的子数组合并在一起,示意图如下,归并的操作过程 ...
分类:
编程语言 时间:
2019-03-24 09:49:00
阅读次数:
241
【题目】 给定两个有序数组arr1和arr2,已知两个数组的长度分别为 m1 和 m2,求两个数组中的第 K 小数。要求时间复杂度O(log(m1 + m2))。 【举例】 例如 arr1 = [1, 2,3],arr2 = [3,4,5,6],K = 4。 则第 K 小数为 3. 例如 arr1 ...
分类:
编程语言 时间:
2019-03-22 16:43:17
阅读次数:
184
本文介绍利用二分实现 lower_bound 的原理。 lower_bound(T * a, T & t, int lo, int hi) 的功能是:在某个有序数组 a[lo, hi) 的范围内,查找不小于 t 的最小元素或最小元素位置。这可以用二分来实现。 算法可以这样理解。我们维护两个界限,分别 ...
分类:
其他好文 时间:
2019-03-22 14:13:55
阅读次数:
157