算法
算法
WinstonLau
这个作者很懒,什么都没留下…
展开
-
各种排序算法总结
文章目录直接插入排序冒泡排序快速排序选择排序希尔排序归并排序堆排序直接插入排序冒泡排序快速排序选择排序希尔排序归并排序堆排序原创 2019-08-19 10:22:15 · 261 阅读 · 1 评论 -
报数问题
题目N个人(N < 10000)从 1 开始依次编号,从第一个人开始报数,每次数到编号为 m 的倍数人就出列(已出列的人不参与后面的报数),然后下一个人接着报数,如果已经是最后一个人了,那么第一个人接着最后一个人的数接着往下报,直到所有的人都出列代码import java.io.*;import java.util.ArrayList;import java.util.Arrays...原创 2019-09-22 18:20:11 · 419 阅读 · 0 评论 -
用Java实现约瑟夫环的三种方式
什么是约瑟夫环问题已知 n 个人(以编号1,2,3 … n 分别表示)围成一圈。从编号为 1 的人开始报数,数到 m 的那个人出列;他的下一个人又从 1 开始报数,数到 m 的那个人又出列;依此规律重复下去,直到最后剩下一个人。要求找出最后出列的人的编号可能有些同学看到的不是从编号为 1 的人开始报数,但我想说,不管从编号为几的人开始报数,其实都可以将这个第一个开始报数的人的编号看作是 1...原创 2019-08-18 14:59:36 · 13737 阅读 · 4 评论 -
插入排序
人们如何进行扑克牌的排序呢?举个例子,比如我手中有红桃6,7,9,10这四张牌,已经处于升序排列:这时候,我又抓到了一张红桃8,如何让手中的五张牌重新变成升序呢?用冒泡排序,选择排序,亦或是快速排序?恐怕正常人打牌的时候都不会那么做。最自然也最简单的方式,是在已经有序的四张牌中找到红桃8应该插入的位置,也就是7和9之间,把红桃8插入进去:给定无序数组如下:把数组的首元素...原创 2019-08-13 10:27:31 · 236 阅读 · 0 评论 -
归并排序
概念归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)示意图可以看到这种结构很像一棵完全二叉树,本文的归并排序我们采用递归去实现(也可采用迭代的方式去实现)。分阶段可以...原创 2019-08-21 09:55:37 · 9193 阅读 · 9 评论 -
如何找到两个数组的中位数
什么意思呢?让我们来看两个例子:上图这两个给定数组A和B,一个长度是6,一个长度是5,归并之后的大数组仍然要保持升序,结果如下:大数组的长度是奇数(11),中位数显然是位于正中的第6个元素,也就是元素5上面的例子是奇数个元素的情况。那么偶数的元素是什么样呢?让我们来看另一个例子:上图这两个给定数组A和B,长度都是5,归并之后的大数组如下:大数组的长度是偶数(10),位于正中的元...原创 2019-08-19 12:13:11 · 3572 阅读 · 4 评论 -
找出已排序数组中两数之和为指定值的所有整数对
输入一个从小到大已排好序的整数数组和一个整数,要求找出数组中两个数的和等于这个整数的所有整数对要求时间复杂度为 O(N)/** * 基本思想:先判断合法性 * 定义两个指针 left 和 right,初始时分别指向数组中的第一个元素和最后一个元素, * 比较 arr[left] + arr[right] 与 sum 的大小,若前者大,则 right--;若后者大, * 则 l...原创 2019-05-12 13:22:33 · 652 阅读 · 0 评论 -
java求一个数组的最大值和最小值
public class Test { public static void getMaxAndMinValue(int[] arr) { //将数组的第一个数分别赋值给 max 和 min int max = arr[0]; int min = arr[0]; for (int i = 0; i &l...原创 2019-04-15 20:09:02 · 8744 阅读 · 4 评论