10大经典排序算法动图演示
排序算法是《数据结构与算法》中最基本的算法之一。
排序算法可以分为内部排序和外部排序。
内部排序是数据记录在内存中进行排序。
而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。
常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。
用一张图概括:
关于时间复杂度:
平方阶 (O(n2)) 排序 各类简单排序:直接插入、直接选择和冒泡排序。
线性对数阶 (O(nlog2n)) 排序 快速排序、堆排序和归并排序;
O(n1+§)) 排序,§ 是介于 0 和 1 之间的常数。 希尔排序
线性阶 (O(n)) 排序 基数排序,此外还有桶、箱排序。
关于稳定性:
稳定的排序算法:冒泡排序、插入排序、归并排序和基数排序。
不是稳定的排序算法:选择排序、快速排序、希尔排序、堆排序。
1. 冒泡排序
1.1 算法步骤
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
1.2 动画演示
1.3 参考代码
1 // Java 代码实现2 public class BubbleSort implements IArraySort {34 @Override5 public int[] sort(int[] sourceArray) throws Exception {6 // 对 arr 进行拷贝,不改变参数内容7 int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);89 for (int i = 1; i < arr.length; i++) { 10 // 设定一个标记,若为true,则表示此次循环没有进行交换,也就是待排序列已经有序,排序已经完成。 11 boolean flag = true; 12 13 for (int j = 0; j < arr.length - i; j++) { 14 if (arr[j] > arr[j + 1]) { 15 int tmp = arr[j]; 16 arr[j] = arr[j + 1]; 17 arr[j + 1] = tmp; 18 19 flag = false; 20 } 21 } 22 23 if (flag) { 24 break; 25 } 26 } 27 return arr; 28 } 29 }
2. 选择排序
2.1 算法步骤
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
重复第二步,直到所有元素均排序完毕。
2.2 动画演示
2.3 参考代码
1 //Java 代码实现2 public class SelectionSort implements IArraySort {34 @Override5 public int[] sort(int[] sourceArray) throws Exception {6 int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);78 // 总共要经过 N-1 轮比较9 for (int i = 0; i < arr.length - 1; i++) { 10 int min = i; 11 12 // 每轮需要比较的次数 N-i 13 for (int j = i + 1; j < arr.length; j++) { 14 if (arr[j] < arr[min]) { 15 // 记录目前能找到的最小值元素的下标 16 min = j; 17 } 18 } 19 20 // 将找到的最小值和i位置所在的值进行交换 21 if (i != min) { 22 int tmp = arr[i]; 23 arr[i] = arr[min]; 24 arr[min] = tmp; 25 } 26 27 } 28 return arr; 29 } 30 }
3. 插入排序
3.1 算法步骤
将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)
3.2 动画演示
3.3 参考代码
1 //Java 代码实现2 public class InsertSort implements IArraySort {34 @Override5 public int[] sort(int[] sourceArray) throws Exception {6 // 对 arr 进行拷贝,不改变参数内容7 int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);89 // 从下标为1的元素开始选择合适的位置插入,因为下标为0的只有一个元素,默认是有序的 10 for (int i = 1; i < arr.length; i++) { 11 12 // 记录要插入的数据 13 int tmp = arr[i]; 14 15 // 从已经排序的序列最右边的开始比较,找到比其小的数 16 int j = i; 17 while (j > 0 && tmp < arr[j - 1]) { 18 arr[j] = arr[j - 1]; 19 j--; 20 } 21 22 // 存在比其小的数,插入 23 if (j != i) { 24 arr[j] = tmp; 25 } 26 27 } 28 return arr; 29 } 30 }
4. 希尔排序
4.1 算法步骤
选择一个增量序列 t1,t2,……,tk,其中 ti > tj, tk = 1;
按增量序列个数 k,对序列进行 k 趟排序;
每趟排序,根据对应的增量 ti,将待排序列分割成若干长度为 m 的子序列,分别对各子表进行直接插入排序。仅增量因子为 1 时,整个序列作为一个表来处理,表长度即为整个序列的长度。
4.2 动画演示
4.3 参考代码
1 //Java 代码实现2 public class ShellSort implements IArraySort {34 @Override5 public int[] sort(int[] sourceArray) throws Exception {6 // 对 arr 进行拷贝,不改变参数内容7 int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);89 int gap = 1; 10 while (gap < arr.length) { 11 gap = gap * 3 + 1; 12 } 13 14 while (gap > 0) { 15 for (int i = gap; i < arr.length; i++) { 16 int tmp = arr[i]; 17 int j = i - gap; 18 while (j >= 0 && arr[j] > tmp) { 19 arr[j + gap] = arr[j]; 20 j -= gap; 21 } 22 arr[j + gap] = tmp; 23 } 24 gap = (int) Math.floor(gap / 3); 25 } 26 27 return arr; 28 } 29 }
5. 归并排序
5.1 算法步骤
申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列;
设定两个指针,最初位置分别为两个已经排序序列的起始位置;
比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置;
重复步骤 3 直到某一指针达到序列尾;
将另一序列剩下的所有元素直接复制到合并序列尾。
5.2 动画演示
5.3 参考代码
1 //Java 代码实现2 public class MergeSort implements IArraySort {3 @Override4 public int[] sort(int[] sourceArray) throws Exception {5 // 对 arr 进行拷贝,不改变参数内容6 int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);78 if (arr.length < 2) {9 return arr; 10 } 11 int middle = (int) Math.floor(arr.length / 2); 12 13 int[] left = Arrays.copyOfRange(arr, 0, middle); 14 int[] right = Arrays.copyOfRange(arr, middle, arr.length); 15 16 return merge(sort(left), sort(right)); 17 } 18 19 protected int[] merge(int[] left, int[] right) { 20 int[] result = new int[left.length + right.length]; 21 int i = 0; 22 while (left.length > 0 && right.length > 0) { 23 if (left[0] <= right[0]) { 24 result[i++] = left[0]; 25 left = Arrays.copyOfRange(left, 1, left.length); 26 } else { 27 result[i++] = right[0]; 28 right = Arrays.copyOfRange(right, 1, right.length); 29 } 30 } 31 32 while (left.length > 0) { 33 result[i++] = left[0]; 34 left = Arrays.copyOfRange(left, 1, left.length); 35 } 36 37 while (right.length > 0) { 38 result[i++] = right[0]; 39 right = Arrays.copyOfRange(right, 1, right.length); 40 } 41 42 return result; 43 } 44 45 }
6. 快速排序
6.1 算法步骤
从数列中挑出一个元素,称为 “基准”(pivot);
重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;
递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序;
6.2 动画演示
6.3 参考代码
1 //Java 代码实现2 public class QuickSort implements IArraySort {34 @Override5 public int[] sort(int[] sourceArray) throws Exception {6 // 对 arr 进行拷贝,不改变参数内容7 int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);89 return quickSort(arr, 0, arr.length - 1); 10 } 11 12 private int[] quickSort(int[] arr, int left, int right) { 13 if (left < right) { 14 int partitionIndex = partition(arr, left, right); 15 quickSort(arr, left, partitionIndex - 1); 16 quickSort(arr, partitionIndex + 1, right); 17 } 18 return arr; 19 } 20 21 private int partition(int[] arr, int left, int right) { 22 // 设定基准值(pivot) 23 int pivot = left; 24 int index = pivot + 1; 25 for (int i = index; i <= right; i++) { 26 if (arr[i] < arr[pivot]) { 27 swap(arr, i, index); 28 index++; 29 } 30 } 31 swap(arr, pivot, index - 1); 32 return index - 1; 33 } 34 35 private void swap(int[] arr, int i, int j) { 36 int temp = arr[i]; 37 arr[i] = arr[j]; 38 arr[j] = temp; 39 } 40 41 }
7. 堆排序
7.1 算法步骤
创建一个堆 H[0……n-1];
把堆首(最大值)和堆尾互换;
把堆的尺寸缩小 1,并调用 shift_down(0),目的是把新的数组顶端数据调整到相应位置;
重复步骤 2,直到堆的尺寸为 1。
7.2 动画演示
7.3 参考代码
1 //Java 代码实现2 public class HeapSort implements IArraySort {34 @Override5 public int[] sort(int[] sourceArray) throws Exception {6 // 对 arr 进行拷贝,不改变参数内容7 int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);89 int len = arr.length; 10 11 buildMaxHeap(arr, len); 12 13 for (int i = len - 1; i > 0; i--) { 14 swap(arr, 0, i); 15 len--; 16 heapify(arr, 0, len); 17 } 18 return arr; 19 } 20 21 private void buildMaxHeap(int[] arr, int len) { 22 for (int i = (int) Math.floor(len / 2); i >= 0; i--) { 23 heapify(arr, i, len); 24 } 25 } 26 27 private void heapify(int[] arr, int i, int len) { 28 int left = 2 * i + 1; 29 int right = 2 * i + 2; 30 int largest = i; 31 32 if (left < len && arr[left] > arr[largest]) { 33 largest = left; 34 } 35 36 if (right < len && arr[right] > arr[largest]) { 37 largest = right; 38 } 39 40 if (largest != i) { 41 swap(arr, i, largest); 42 heapify(arr, largest, len); 43 } 44 } 45 46 private void swap(int[] arr, int i, int j) { 47 int temp = arr[i]; 48 arr[i] = arr[j]; 49 arr[j] = temp; 50 } 51 52 }
8. 计数排序
8.1 算法步骤
花O(n)的时间扫描一下整个序列 A,获取最小值 min 和最大值 max
开辟一块新的空间创建新的数组 B,长度为 ( max - min + 1)
数组 B 中 index 的元素记录的值是 A 中某元素出现的次数
最后输出目标整数序列,具体的逻辑是遍历数组 B,输出相应元素以及对应的个数
8.2 动画演示
8.3 参考代码
1 //Java 代码实现2 public class CountingSort implements IArraySort {34 @Override5 public int[] sort(int[] sourceArray) throws Exception {6 // 对 arr 进行拷贝,不改变参数内容7 int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);89 int maxValue = getMaxValue(arr); 10 11 return countingSort(arr, maxValue); 12 } 13 14 private int[] countingSort(int[] arr, int maxValue) { 15 int bucketLen = maxValue + 1; 16 int[] bucket = new int[bucketLen]; 17 18 for (int value : arr) { 19 bucket[value]++; 20 } 21 22 int sortedIndex = 0; 23 for (int j = 0; j < bucketLen; j++) { 24 while (bucket[j] > 0) { 25 arr[sortedIndex++] = j; 26 bucket[j]--; 27 } 28 } 29 return arr; 30 } 31 32 private int getMaxValue(int[] arr) { 33 int maxValue = arr[0]; 34 for (int value : arr) { 35 if (maxValue < value) { 36 maxValue = value; 37 } 38 } 39 return maxValue; 40 } 41 42 }
9. 桶排序
9.1 算法步骤
设置固定数量的空桶。
把数据放到对应的桶中。
对每个不为空的桶中数据进行排序。
拼接不为空的桶中数据,得到结果
9.2 动画演示
9.3 参考代码
1 //Java 代码实现2 public class BucketSort implements IArraySort {34 private static final InsertSort insertSort = new InsertSort();56 @Override7 public int[] sort(int[] sourceArray) throws Exception {8 // 对 arr 进行拷贝,不改变参数内容9 int[] arr = Arrays.copyOf(sourceArray, sourceArray.length); 10 11 return bucketSort(arr, 5); 12 } 13 14 private int[] bucketSort(int[] arr, int bucketSize) throws Exception { 15 if (arr.length == 0) { 16 return arr; 17 } 18 19 int minValue = arr[0]; 20 int maxValue = arr[0]; 21 for (int value : arr) { 22 if (value < minValue) { 23 minValue = value; 24 } else if (value > maxValue) { 25 maxValue = value; 26 } 27 } 28 29 int bucketCount = (int) Math.floor((maxValue - minValue) / bucketSize) + 1; 30 int[][] buckets = new int[bucketCount][0]; 31 32 // 利用映射函数将数据分配到各个桶中 33 for (int i = 0; i < arr.length; i++) { 34 int index = (int) Math.floor((arr[i] - minValue) / bucketSize); 35 buckets[index] = arrAppend(buckets[index], arr[i]); 36 } 37 38 int arrIndex = 0; 39 for (int[] bucket : buckets) { 40 if (bucket.length <= 0) { 41 continue; 42 } 43 // 对每个桶进行排序,这里使用了插入排序 44 bucket = insertSort.sort(bucket); 45 for (int value : bucket) { 46 arr[arrIndex++] = value; 47 } 48 } 49 50 return arr; 51 } 52 53 /** 54 * 自动扩容,并保存数据 55 * 56 * @param arr 57 * @param value 58 */ 59 private int[] arrAppend(int[] arr, int value) { 60 arr = Arrays.copyOf(arr, arr.length + 1); 61 arr[arr.length - 1] = value; 62 return arr; 63 } 64 65 }
10. 基数排序
10.1 算法步骤
将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零
从最低位开始,依次进行一次排序
从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列
10.2 动画演示
10.3 参考代码
1 //Java 代码实现2 public class RadixSort implements IArraySort {34 @Override5 public int[] sort(int[] sourceArray) throws Exception {6 // 对 arr 进行拷贝,不改变参数内容7 int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);89 int maxDigit = getMaxDigit(arr); 10 return radixSort(arr, maxDigit); 11 } 12 13 /** 14 * 获取最高位数 15 */ 16 private int getMaxDigit(int[] arr) { 17 int maxValue = getMaxValue(arr); 18 return getNumLenght(maxValue); 19 } 20 21 private int getMaxValue(int[] arr) { 22 int maxValue = arr[0]; 23 for (int value : arr) { 24 if (maxValue < value) { 25 maxValue = value; 26 } 27 } 28 return maxValue; 29 } 30 31 protected int getNumLenght(long num) { 32 if (num == 0) { 33 return 1; 34 } 35 int lenght = 0; 36 for (long temp = num; temp != 0; temp /= 10) { 37 lenght++; 38 } 39 return lenght; 40 } 41 42 private int[] radixSort(int[] arr, int maxDigit) { 43 int mod = 10; 44 int dev = 1; 45 46 for (int i = 0; i < maxDigit; i++, dev *= 10, mod *= 10) { 47 // 考虑负数的情况,这里扩展一倍队列数,其中 [0-9]对应负数,[10-19]对应正数 (bucket + 10) 48 int[][] counter = new int[mod * 2][0]; 49 50 for (int j = 0; j < arr.length; j++) { 51 int bucket = ((arr[j] % mod) / dev) + mod; 52 counter[bucket] = arrayAppend(counter[bucket], arr[j]); 53 } 54 55 int pos = 0; 56 for (int[] bucket : counter) { 57 for (int value : bucket) { 58 arr[pos++] = value; 59 } 60 } 61 } 62 63 return arr; 64 } 65 private int[] arrayAppend(int[] arr, int value) { 66 arr = Arrays.copyOf(arr, arr.length + 1); 67 arr[arr.length - 1] = value; 68 return arr; 69 } 70 }
本文思路来源于:https://github.com/hustcc/JS-Sorting-Algorithm
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 软件专业大学生常用的刷题、找答案的网站
接下来介绍的主要是结合个人和身边同学经常使用的几个网站,肯定有很多不全,欢迎大佬们查漏补缺刷题 一、牛客网(https://www.nowcoder.com/)“牛客网”是一个专注于程序员的学习和成长的专业平台,集笔面试系统、课程教育、社群交流、招聘内推于一体。 也是个人最常使用的刷…...
2024/4/23 14:33:17 - redis参考
redis参考1 https://blog.csdn.net/ThinkWon/article/details/103522351 Redis面试题(2020最新版)2 https://mp.weixin.qq.com/s?__biz=MzI1MzYzMTI2Ng==&mid=2247484439&idx=1&sn=2b1199ccb150c99b4efea45e2a5f49d5&scene=21#wechat_redirect3w字深度好文…...
2024/4/23 14:33:16 - Python介绍,解释器发展史,解释器的类型
目录: Python介绍 Python解释器发展史 Python解释器的类型 第一个Python程序一、Python介绍Python的创始人为吉多范罗苏姆(Guido vanRossum),如下图,少数几个不秃头的语言创始人。1989年的圣诞节期间,Guido为了打发圣诞节的无聊时光,开始写能够解释Python语言语法的解释…...
2024/4/23 14:33:16 - day02【CSS&JS入门】、HTML引入CSS、基本选择器、字体和文本属性、盒子模型、HTML引入JS、JS三种输出方式、JS变量声明、JS数据类型
回顾 1. html概述超文本标记语言作用:搭建基础网页2. html基础书写规范<html><head></head><body></body></html>3. html常用标签h1~h6:align="center"hr:color="#ff ff ff" width="px %"br:换行p:段落…...
2024/4/23 14:33:14 - SpringCloud微服务项目实战 - 微服务调用详解(附面试题)
今天继续SpringCloud微服务项目实战系列文章,前面的文章已经说了微服务的服务注册与发现,现在接着上一篇的话题,说说微服务之间的调用。在实战之前,我们还是先掌握下基础理论等知识,继续以面试题的形式展开。微服务调用介绍一,SpringCloud微服务之间调用的方式有那些?在…...
2024/4/23 14:33:14 - Tensorflow2.0之基于注意力的神经机器翻译
文章目录代码实现1、处理数据集1.1 导入需要的库1.2 下载文件1.3 处理西班牙语中的重音1.4 处理ascii文本1.5 返回单词对1.6 生成文档词典1.7 加载数据集1.8 计算目标张量的最大长度1.9 划分训练集和测试集1.10 将数字向量转化为文本1.11 创建一个 tf.data 数据集2、编写模型2.…...
2024/4/23 14:33:15 - 超链接(网页设计实验)
<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>班级主页</title><style>ul {list…...
2024/4/30 3:26:25 - Mavenir推出云原生RCS解决方案,作为Rakuten Mobile通信平台Rakuten Link的一部分
德州理查森--(美国商业资讯)--行业唯一面向通信服务提供商供应端到端、云原生网络软件的提供商Mavenir宣布,该公司已成功部署其下一代语音和消息传递解决方案,该解决方案将成为Rakuten Mobile通信应用程序Rakuten Link的一部分。此新闻稿包含多媒体内容。完整新闻稿可在以下网…...
2024/4/19 23:39:42 - 解决IDEA出现File Cache Conflict弹窗问题
官方解释解决方案 IDEA虽然没有安装在C盘,但是其配置文件和缓存文件仍然在C盘config 目录是 IntelliJ IDEA 个性化化配置目录。这个目录主要记录了:IDE 主要配置功能、自定义的代码模板、自定义的文件模板、自定义的快捷键、Project 的 tasks 记录等等个性化的设置。 system …...
2024/4/16 10:21:08 - Jmeter 简单入门教程
该文章是基于上一次文章的 软件测试漫谈(web测试,自动化测试,Jmeter) 的续篇, 主要是详细讲解 Jmeter 的入门教程。 因为上次的文章只是简单地讲解了 Jmeter 的使用和一些概念,所以很多初学者像按照原来的文章操作 Jmeter 进行测试是比较麻烦的,所有才有了这篇后续,以帮…...
2024/4/15 8:29:02 - (校赛)MATLAB入门一小时,简单处理流程------2020.04.09
相信我,还是两节课,没多。 原软云疫情期间估摸着不上课、没作业、happpppppppppppppppppppy。 上去开学之后估计数模要放放了,校赛应该也快了。 你是我的miracle,please成长吧。 问题:已知股票交易数据,即日期、开盘价、最高价、最低价、收盘价、成长量和换手率,试用某种…...
2024/4/17 7:05:54 - 自动化测试selenium篇(二)
API讲解 #防止乱码。 coding = utf-8 #要想使用selenium 的webdriver 里的函数,首先把包导进来 from selenium import webdriver import time #需要操控哪个浏览器 browser = webdriver.Firefox() time.sleep(3) browser.get("http://www.baidu.com") time.sleep(3)…...
2024/4/26 20:15:12 - 集成支付宝支付
支付宝支付集成 首先官网查看官方文档(选择你需要查看的类型)https://open.alipay.com/developmentDocument.htm我是用的电脑网页版(java开发版) 在官网提供的github中下载完后,一定要根据其中的readme进行配置。如上如片所示! 文档中的一些操作说一下 首先mvn package -Dski…...
2024/4/17 7:06:36 - Apache SparkSQL 两种查询风格:DSL与SQL
SparkSQL两种查询风格DSL与SQL 准备数据 person.txt文件内容: 1 zhangsan 20 2 lisi 29 3 wangwu 25 4 zhaoliu 30 5 tianqi 35 6 kobe 40读取文件并转换为DataFrame或DataSet val lineRDD= sc.textFile("hdfs://hadoop01:8020/person.txt").map(_.split(" &qu…...
2024/5/2 7:18:34 - 面试阿里太难了!二本毕业、两年crud经验,侥幸通过面试定级P6
本文素材来自一位关注我一年多的铁粉对于很多没有学历优势的人来说,面试大厂是非常困难的,这对我而言,也是一样,出身于二本,原本以为就三点一线的生活度过一生,直到生活上的变故,才让我有了新的想法和目标,因此我这个二本渣渣也奋斗了起来,竟拿下了阿里P6岗。今天分享…...
2024/4/23 14:33:18 - html5新增
Day23 1、 html5语义化结构标签 section 更偏于划分区域。(网页的外围结构,类似于div) article 更偏向于内容的展示 aside 侧边栏 hearer 网页头部或者是内容块儿的头部 footer 网页底部或者是内容块儿的底部 nav 导航区域 figure 代表一个独立的区域 figcaption figure区域…...
2024/4/28 14:51:40 - TensorFlow训练内(显)存不断增长
在使用tensorflow过程中,一个不标准的操作,就可能导致程序出各种bug,今天我们的猪脚就是“TensorFlow训练内(显)存不断增长”,此问题并不是我遇到的,是公司一位同事遇到的,我把代码翻了一下,看出了问题所在,由于一些保密原因,我就不在这里展示那个代码,但可以用其他…...
2024/4/23 14:33:09 - PV、UV、IP
PV值PV(page view)即页面浏览量或点击量,是衡量一个网站或网页用户访问量。PV值是所有访问者在0点到24点内看了某个网站多少个页面或某个网页多少次。PV是指页面刷新的次数,每一次页面刷新,就算做一次PV流量。度量方法就是从浏览器发出一个对网络服务器的请求(Request),…...
2024/5/2 10:16:34 - 力扣704. 二分查找(顺序查找)
力扣704. 二分查找https://leetcode-cn.com/problems/binary-search/给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。思路:有序,就是顺序查找,最简便的是二分查找我的VS代码…...
2024/4/23 14:33:14 - IDEA设置自动导包
勾选标注 1 选项,IntelliJ IDEA 将在我们书写代码的时候自动帮我们优化导入的包,比如自动去掉一些没有用到的包。 勾选标注 2 选项,IntelliJ IDEA 将在我们书写代码的时候自动帮我们导入需要用到的包。但是对于那些同名的包,还是需要手动 Alt + Enter 进行导入的...
2024/4/17 7:07:06
最新文章
- Tracecat:开源 SOAR
Tracecat 是一个面向安全团队的开源自动化平台。 开发人员认为,每个人都应该可以使用安全自动化,特别是人手不足的中小型团队。 核心功能、用户界面和日常工作流程基于一流安全团队的现有最佳实践。 使用专门的人工智能模型来标记、总结和丰富警报。 …...
2024/5/2 18:03:16 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 鹅厂实习offer
#转眼已经银四了,你收到offer了吗# 本来都打算四月再投实习了,突然三月初被wxg捞了(一年前找日常实习投的简历就更新了下),直接冲了,流程持续二十多天,结果是运气还不错,应该是部门比…...
2024/5/1 13:19:09 - 微信小程序的页面交互2
一、自定义属性 (1)定义: 微信小程序中的自定义属性实际上是由data-前缀加上一个自定义属性名组成。 (2)如何获取自定义属性的值? 用到target或currentTarget对象的dataset属性可以获取数据 ÿ…...
2024/5/1 13:38:59 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/1 17:30:59 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/2 16:16:39 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/29 2:29:43 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/2 9:28:15 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/30 9:43:09 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/2 15:04:34 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/29 20:46:55 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/30 22:21:04 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/1 4:32:01 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/30 9:42:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/2 9:07:46 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/30 9:42:49 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57