JAVA-算法大全

这学期老师把算法交完了,整理了一些最常用的算法,其实最主要的还是算法思想
算法思想有很多,业界公认的常用算法思想有8种,分别是枚举、递推、递归、分治、贪心、试探法、动态迭代和模拟。当然8种只是一个大概的划分,是一个“仁者见仁、智者见智”的问题

1.快速排序算法

原理

设要排序的数组是A[0]……A[N-1],首先任意选取一个数据通常选用数组的第一个数作为关键数据,然后将所有比它小的数都放到它左边,所有比它大的数都放到它右边,这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。
一趟快速排序的算法是:
  1. 设置两个变量i、j,排序开始的时候:i=0,j=N-1;
  2. 以第一个数组元素作为关键数据,赋值给key,即key=A[0];
  3. 从j开始向前搜索,即由后开始向前搜索(j–),找到第一个小于key的值A[j],将A[j]和A[i]的值交换;
  4. 从i开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的A[i],将A[i]和A[j]的值交换;
  5. 重复第3、4步,直到i==j;
  6. 3,4步中,没找到符合条件的值,即3中 A[ j ] 不小于key,4中 A[ i ]不大于key的时候改变 j、i 的值,使得j=j-1,i=i+1,直至找到为止。找到符合条件的值,进行交换的时候 i,j 指针位置不变。另外,i== j这一过程一定正好是 i + 或 j - 完成的时候,此时令循环结束

排序演示

假设一开始序列{xi}是:5,3,7,6,4,1,0,2,9,10,8。
此时ref=5,i=1,j=11,从后往前找,第一个比5小的数是x8=2,因此序列为:2 3 7 6 4 1 0 5 9 10 8
此时i=1,j=8,从前往后找,第一个比5大的数是x3=7,因此序列为:2 3 5 6 4 1 0 7 9 10 8
此时,i=3,j=8,从第8位往前找,第一个比5小的数是x7=0,因此:2 3 0 6 4 1 5 7 9 10 8
此时,i=3,j=7,从第3位往后找,第一个比5大的数是x4=6,因此:2 3 0 5 4 1 6 7 9 10 8
此时,i=4,j=7,从第7位往前找,第一个比5小的数是x6=1,因此:2 3 0 1 4 5 6 7 9 10 8
此时,i=4,j=6,从第4位往后找,直到第6位才有比5大的数,这时,i=j=6,ref成为一条分界线,它之前的数都比它小,之后的数都比它大,对于前后两部分数,可以采用同样的方法来排序

快速排序图示

代码展示

package test1;
/*** @author 小徐同学** 2021年10月30日*/public class First {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("hello,world!");int[] a =new int[]{100,44,66,88,33,11,44,2};System.out.println("未排序前的数据为:");print(a);System.out.println("排序后的结果为:");sort(a,0,a.length-1);print(a);}public static void print(int[] b){for(int i = 0;i < b.length;i++){System.out.println(b[i]);}System.out.println("");}//排序方法static void sort(int[] a,int low,int high){if(low>=high)return;// low小于high ,则直接返回if((high-low)==1){//如果只有两个数字,则直接进行比较if(a[0]>a[1])swap(a,0,1);return;}int pivot = a[low];//取第一个数作为哨兵int left = low + 1;//开始逐步进行交换,因为哨兵为第一个元素,所以进行第二个数进行开始与最右边的进行对比int right = high;while(left < right){while(left < right && left <= high){//如果左小于右则一直循环  33 100,40,60,87,34,11,56,0if (a[left]>pivot)          //left =1  right=7break;left++;//左下标往右边走一点}//从右边开始找while(left <= right&& right > low){//如果左大于右则一直循环if(a[right]<=pivot)break;right--;//右下标往左走一点}if(left < right)//如果没有找完,则交换数字swap(a,right,left);}swap(a,low,right);//交换哨兵,进行下一次快速排序sort(a,low,right);sort(a,right+1,high);}private static void swap(int[] array,int i,int j){int temp;temp=array[i];array[i]=array[j];array[j]=temp;
}
}

结果为

排序结果

2.直接排序算法

原理

直接选择排序(Straight Select Sorting) 也是一种简单的排序方法,它的基本思想是:第一次从R[0]R[n-1]中选取最小值,与R[0]交换,第二次从R[1]R[n-1]中选取最小值,与R[1]交换,…,第i次从R[i-1] ~ R[n-1]中选取最小值,与R[i-1]交换,…,第n-1次从R[n-2] ~ R[n-1]中选取最小值,与R[n-2]交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列。

演示

演示图片

演示

例如:给定n=8,数组R中的8个元素的排序码为(8,3,2,1,7,4,6,5),则直接选择排序的过程如下所示
由于百科不方便画出关联箭头 所以用 n – n 表示 :

初始状态 [ 8 3 2 1 7 4 6 5 ] 8 – 1
第一次 [ 1 3 2 8 7 4 6 5 ] 3 – 2
第二次 [ 1 2 3 8 7 4 6 5 ] 3 – 3
第三次 [ 1 2 3 8 7 4 6 5 ] 8 – 4
第四次 [ 1 2 3 4 7 8 6 5 ] 7 – 5
第五次 [ 1 2 3 4 5 8 6 7 ] 8 – 6
第六次 [ 1 2 3 4 5 6 8 7 ] 8 – 7
第七次 [ 1 2 3 4 5 6 7 8 ] 排序完成

代码演示

package test1;
import java.util.*;
/*** @author 小徐同学** 2021年10月30日*/
public class Sort {public static void main(String[] args) {int array[] = new int[20];//定义数组的大小array = new int[] { 5, 3, 7, 9, 23, 42, 12, 1 };for (int i = 0; i < array.length; i++) {for (int j = i + 1; j < array.length; j++) {if (array[i] > array[j]) {int temp = array[i];array[i] = array[j];array[j] = temp;}}System.out.println(Arrays.toString(array));// 输出每次循环后排序所得的内容}System.out.println(Arrays.toString(array));// 输出最后的排序结果}
}

结果

快速排序结果

3.插入排序

插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。

  1. 从有序数列和无序数列{a2,a3,…,an}开始进行排序;

  2. 处理第i个元素时(i=2,3,…,n),数列{a1,a2,…,ai-1}是已有序的,而数列{ai,ai+1,…,an}是无序的。用ai与ai-1,a i-2,…,a1进行比较,找出合适的位置将ai插入;

  3. 重复第二步,共进行n-i次插入处理,数列全部有序。
    插入排序实例

package test1;
import java.util.Arrays;
/*** @author 小徐同学** 2021年10月30日*/
public class InsertionSorting {public static void main(String[] s) {int[] arr = {1,2,3,0};System.out.println("排序前:"+Arrays.toString(arr));insertSort(arr,0,arr.length);System.out.println("排序后:"+Arrays.toString(arr));}public static void insertSort(int[] object,int low,int high) {   //将第一个值看做一个有序序列for(int i = 1;i < high;i++) {if(object[i] < object[i-1]) {int temp = object[i];//待比较的数值int j = i-1;for(;j >= low&&object[j] > temp;j--) {object[j+1] = object[j];}//比较完成后获得j最后的位置object[j+1] = temp;}}}}

结果

排序前:[1, 2, 3, 0]
排序后:[0, 1, 2, 3]

4.折半插入排序

折半插入排序(binary insertion sort)是对插入排序算法的一种改进,由于排序算法过程中,就是不断的依次将元素插入前面已排好序的序列中。由于前半部分为已排好序的数列,这样我们不用按顺序依次寻找插入点,可以采用折半查找的方法来加快寻找插入点的速度

实例

在将一个新元素插入已排好序的数组的过程中,寻找插入点时,将待插入区域的首元素设置为a[low],
末元素设置为a[high],则轮比较时将待插入元素与a[m],其中m=(low+high)/2相比较,如果比参考元素小,则选择a[low]到a[m-1]为新的插入区域(即high=m-1),否则选择a[m+1]到a[high]为新的插入区域(即low=m+1),如此直至low<=high不成立,即将此位置之后所有元素后移一位,并将新元素插入a[high+1]

package test1;
import java.util.Arrays;
/*** @author 小徐同学** 2021年10月30日*/
public class SplitInsertionSort {  public static void main(String[] args){// 待排序的数组        int[] array = { 1, 0, 2, 5, 3, 4, 9, 8, 10, 6, 7}; System.out.println("折半排序前:"+Arrays.toString(array));binaryInsertSort(array);   // 显示排序后的结果。        System.out.println("折半排序后"+Arrays.toString(array));}   // Binary Insertion Sort method    private static void binaryInsertSort(int[] array){for(int i = 1; i < array.length; i++){int temp = array[i];            int low = 0;            int high = i - 1;  while(low <= high){                int mid = (low + high) / 2;                if(temp < array[mid]){                    high = mid - 1;                }else{                    low = mid + 1;}       }for(int j = i; j >= low + 1; j--){            array[j] = array[j - 1];                                                      }       array[low] = temp;       }   }}

结果

折半排序前:[1, 0, 2, 5, 3, 4, 9, 8, 10, 6, 7]
折半排序后[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

5.冒泡排序

冒泡排序(Bubble Sort)它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

实例

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数
  3. 针对所有的元素重复以上的步骤,除了最后一个
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
    冒泡排序

非优化版本

代码

package test1;
import java.util.Arrays;
/*** @author 小徐同学** 2021年10月30日*/
public class BubbleSort {public static void bubbleSort(int arr[]) {for(int i = 0 ; i < arr.length-1 ; i++) { for(int j = 0 ; j < arr.length-1-i ; j++) {  if(arr[j] > arr[j+1]) {int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}    }}public static void main(String[] args) {// TODO Auto-generated method stubint [] arr = {10,20,3,0,40,52,3,4};System.out.println("冒泡排序前:"+Arrays.toString(arr));bubbleSort(arr);System.out.println("冒泡排序后"+Arrays.toString(arr));}}

结果

冒泡排序前:[10, 20, 3, 0, 40, 52, 3, 4]
冒泡排序后[0, 3, 3, 4, 10, 20, 40, 52]

优化版本

数据的顺序排好之后,冒泡算法仍然会继续进行下一轮的比较,直到arr.length-1次,后面的比较没有意义的。

方案:

设置标志位flag,如果发生了交换flag设置为true;如果没有交换就设置为false。
这样当一轮比较结束后如果flag仍为false,即:这一轮没有发生交换,说明数据的顺序已经排好,没有必要继续进行下去。

package test1;
import java.util.Arrays;
/*** @author 小徐同学** 2021年10月30日*/
public class BubbleSort {public static void BubbleSort1(int [] arr){int temp;//临时变量boolean flag;//是否交换的标志for(int i=0; i<arr.length-1; i++){   //表示趟数,一共 arr.length-1 次      // 每次遍历标志位都要先置为false,才能判断后面的元素是否发生了交换flag = false;for(int j=arr.length-1; j>i; j--){ //选出该趟排序的最大值往后移动if(arr[j] < arr[j-1]){temp = arr[j];arr[j] = arr[j-1];arr[j-1] = temp;flag = true;    //只要有发生了交换,flag就置为true}}// 判断标志位是否为false,如果为false,说明后面的元素已经有序,就直接returnif(!flag) break ;}}public static void main(String[] args) {// TODO Auto-generated method stubint [] arr = {10,20,3,0,40,52,3,4};System.out.println("冒泡排序前:"+Arrays.toString(arr));BubbleSort1(arr);System.out.println("冒泡排序后"+Arrays.toString(arr));}}

结果

冒泡排序前:[10, 20, 3, 0, 40, 52, 3, 4]
冒泡排序后[0, 3, 3, 4, 10, 20, 40, 52]

7.希尔排序

希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。

希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至 1 时,整个文件恰被分成一组,算法便终止。

一般的初次取序列的一半为增量,以后每次减半,直到增量为1。

给定实例的shell排序的排序过程

假设待排序文件有10个记录,其关键字分别是:

49,38,65,97,76,13,27,49,55,04。
增量序列的取值依次为:5,2,1
希尔排序

package test1;
import java.util.Arrays;
/*** @author 小徐同学** 2021年10月30日*/
public class ShellSort {public static void main(String[] args){int[] array={49,38,65,97,76,13,27,49,78,34,12,64,1};System.out.println("排序前"+Arrays.toString(array));//希尔排序int gap = array.length;while (true) {    gap /= 2;   //增量每次减半    for (int i = 0; i < gap; i++) {        for (int j = i + gap; j < array.length; j += gap) {//这个循环里其实就是一个插入排序                       int k = j - gap;            while (k >= 0 && array[k] > array[k+gap]) {int temp = array[k];array[k] = array[k+gap];array[k + gap] = temp;                k -= gap;            }                }    }    if (gap == 1)        break;}System.out.println();System.out.println("排序后"+Arrays.toString(array));}}

结果

排序前[49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 1]
排序后[1, 12, 13, 27, 34, 38, 49, 49, 64, 65, 76, 78, 97]

8.归并排序

递归式归并排序

归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。
将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并

归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作
如 设有数列{6,202,100,301,38,8,1}
初始状态: [6] [202] [100] [301] [38] [8] [1] 比较次数
i=1 [6 202 ] [ 100 301] [ 8 38] [ 1 ] 3
i=2 [ 6 100 202 301 ] [ 1 8 38 ] 4
i=3 [ 1 6 8 38 100 202 301 ] 4
总计: 11次代码

归并递归

package test1;
import java.util.Arrays;
/*** @author 小徐同学** 2021年10月30日*/
public class MergeSort {//测试public static void main(String[] args) {Integer[] I = {5,3,1,4,2,10,6,7};System.out.println("排序前:"+Arrays.toString(I));sort(I);System.out.println("排序后:"+Arrays.toString(I));}//实现归并操作public static void merge(Comparable[] a, int lo, int mid, int hi){//定义三个指针int p1= lo; //p1指向左子组的第一个元素int p2= mid+1;  //p2指向右子组的第一个元素int i = lo;     //i指向辅助数组的第一个元素//定义辅助数组Comparable[] aux = new Comparable[a.length];//实现归并while(p1<=mid || p2<=hi) {if (p1 > mid) aux[i++] = a[p2++];else if (p2 > hi) aux[i++] = a[p1++];else if (a[p1].compareTo(a[p2]) < 0) aux[i++] = a[p1++];else aux[i++] = a[p2++];}//将排序之后的aux数组复制给原来的数组a,这样a中对应的元素便是有序的for (int k = lo; k <= hi; k++) {a[k]=aux[k];}}public static void sort(Comparable[] a){sort(a,0,a.length-1);}public static void sort(Comparable[] a, int lo, int hi){if (hi<=lo) return;//分成两组int mid = lo+(hi-lo)/2;//通过递归进行排序sort(a,lo,mid);sort(a,(mid+1),hi);merge(a,lo,mid,hi);}}

结果

排序前:[5, 3, 1, 4, 2, 10, 6, 7]
排序后:[1, 2, 3, 4, 5, 6, 7, 10]

非递归式归并排序

非递归实现归并排序的划分函数Merge和递归的归并排序是一样的,但是使用了一种较为巧妙的方法来代替递归过程,具体过程都注释在代码中了,代码如下:

package test1;
import java.util.Arrays;
/*** 非递归实现归并排序*/
/*** @author 小徐同学** 2021年10月30日*/
public class UnMargeSort {//划分函数,一定程度上的排序,并排不完,需要递归调用来完成归并排序,相当于把问题分而治之public static void Merge(int []dsi,int []src,int left ,int m, int right){int i = left, j = m+1;int k = left;while(i<=m && j<=right){dsi[k++] = src[i] < src[j]? src[i++]:src[j++];}while(i<=m){dsi[k++] = src[i++];}while(j<=right){dsi[k++] = src[j++];}}/*** 非递归的归并排序* @param dis 排序好的数组* @param src 源数据的数组* @param s 划分区间参数,也就是表示这一轮中s个数据一起排一次* @param n 最后一个元素的下标值*/public static void NiceMergePass(int []dis,int []src,int s,int n) // n => index;{System.out.printf("s = %d \n",s);int i = 0;for(i = 0;i+2*s -1 <= n;i = i+2*s){   //    i <= n -2*s+1Merge(dis,src,i,i+s-1,i+2*s-1);System.out.printf("left: %d m: %d right: %d \n",i,i+s-1,i+2*s-1);}if(n >= i+s){//如果最后一个元素的下标值n>=i+s,那么就是说还有数字没有进行划分// 我们直接给Merge()函数的参数列表传参改变划分的范围以保证每个元素都被划分Merge(dis,src,i,i+s-1,n);System.out.printf("left: %d m: %d right: %d \n",i,i+s-1,n);}else{//如果最后一个元素的下标值n<i+s,那么就是说划分范围超过元素数量,// 产生这种情况的原因在于下面的NiceMergeSort函数中的s+=s这样的扩大划分范围的操作//这时我们只需要把 下标为n之前的 未划分的 元素入到 dis[]数组中即可for(int j = i;j<=n;++j){dis[j] = src[j];}}}//递归实现归并排序,其中ar[]和br[]在每一次归并后互相传参,防止还没有被划分的元素丢失public static void NiceMergeSort(int []ar){int []br = new int[ar.length];int n = ar.length -1;     //n为最后一个元素的下标值int s = 1; //第一轮s为1   s用来规划几个元素一组 再进行划分函数Merge()while(s < n){NiceMergePass(br,ar,s,n);System.out.println(Arrays.toString(br));s+=s; // 第二轮s为2 // 第四轮s为8// s<<=1操作也可以;NiceMergePass(ar,br,s,n);System.out.println(Arrays.toString(ar));s+=s; // 第三轮s为4  // 第五轮s为16 // s<<=1操作也可以}}public static void main(String[] args){  int []ar = {23,54,34,56,92,12,65};System.out.println("原始书籍:"+Arrays.toString(ar));NiceMergeSort(ar);System.out.println("递归实现归并排序:"+Arrays.toString(ar));}}

9.堆排序

堆排序是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点

原理

在堆的数据结构中,堆中的最大值总是位于根节点(在优先队列中使用堆的话堆中的最小值位于根节点)。堆中定义以下几种操作:

  1. 最大堆调整(Max Heapify):将堆的末端子节点作调整,使得子节点永远小于父节点
  2. 创建最大堆(Build Max Heap):将堆中的所有数据重新排序
  3. 堆排序(HeapSort):移除位在第一个数据的根节点,并做最大堆调整的递归运算

堆排序

代码

package test1;
import java.util.Arrays;
/*** @author 小徐同学** 2021年10月30日*/
public class HeapSort {/*** 选择排序-堆排序* @param array 待排序数组* @return 已排序数组*/public static int[] heapSort(int[] array) {//这里元素的索引是从0开始的,所以最后一个非叶子结点array.length/2 - 1for (int i = array.length / 2 - 1; i >= 0; i--) {  adjustHeap(array, i, array.length);  //调整堆}// 上述逻辑,建堆结束// 下面,开始排序逻辑for (int j = array.length - 1; j > 0; j--) {// 元素交换,作用是去掉大顶堆// 把大顶堆的根元素,放到数组的最后;换句话说,就是每一次的堆调整之后,都会有一个元素到达自己的最终位置swap(array, 0, j);// 元素交换之后,毫无疑问,最后一个元素无需再考虑排序问题了。// 接下来我们需要排序的,就是已经去掉了部分元素的堆了,这也是为什么此方法放在循环里的原因// 而这里,实质上是自上而下,自左向右进行调整的adjustHeap(array, 0, j);}return array;}/*** 整个堆排序最关键的地方* @param array 待组堆* @param i 起始结点* @param length 堆的长度*/public static void adjustHeap(int[] array, int i, int length) {// 先把当前元素取出来,因为当前元素可能要一直移动int temp = array[i];for (int k = 2 * i + 1; k < length; k = 2 * k + 1) {  //2*i+1为左子树i的左子树(因为i是从0开始的),2*k+1为k的左子树// 让k先指向子节点中最大的节点if (k + 1 < length && array[k] < array[k + 1]) {  //如果有右子树,并且右子树大于左子树k++;}//如果发现结点(左右子结点)大于根结点,则进行值的交换if (array[k] > temp) {swap(array, i, k);// 如果子节点更换了,那么,以子节点为根的子树会受到影响,所以,循环对子节点所在的树继续进行判断i  =  k;} else {  //不用交换,直接终止循环break;}}}public static void swap(int[] arr, int a, int b) {int temp = arr[a];arr[a] = arr[b];arr[b] = temp;}public static void main(String [] args){int [] arr = {11,5,8,66,4,2,0,44};System.out.println("排序前:"+Arrays.toString(arr));heapSort(arr);System.out.println("排序后:"+Arrays.toString(arr));}
}

结果

排序前:[11, 5, 8, 66, 4, 2, 0, 44]
排序后:[0, 2, 4, 5, 8, 11, 44, 66]

10.基数排序

基数排序属于分配式排序,又称桶子法(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog®m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性排序法

实例

第一步
以LSD为例,假设原来有一串数值如下所示:
73, 22, 93, 43, 55, 14, 28, 65, 39, 81
首先根据个位数的数值,在走访数值时将它们分配至编号0到9的桶子中:
0
1 81
2 22
3 73 93 43
4 14
5 55 65
6
7
8 28
9 39
第二步
接下来将这些桶子中的数值重新串接起来,成为以下的数列:
81, 22, 73, 93, 43, 14, 55, 65, 28, 39
接着再进行一次分配,这次是根据十位数来分配:
0
1 14
2 22 28
3 39
4 43
5 55
6 65
7 73
8 81
9 93
第三步
接下来将这些桶子中的数值重新串接起来,成为以下的数列:
14, 22, 28, 39, 43, 55, 65, 73, 81, 93
这时候整个数列已经排序完毕;如果排序的对象有三位数以上,则持续进行以上的动作直至最高位数为止。
LSD的基数排序适用于位数小的数列,如果位数多的话,使用MSD的效率会比较好。MSD的方式与LSD相反,是由高位数为基底开始进行分配,但在分配之后并不马上合并回一个数组中,而是在每个“桶子”中建立“子桶”,将每个桶子中的数值按照下一数位的值分配到“子桶”中。在进行完最低位数的分配后再合并回单一的数组中。

实现方法

最高位优先(Most Significant Digit first)法,简称MSD法:先按k1排序分组,同一组中记录,关键码k1相等,再对各组按k2排序分成子组,之后,对后面的关键码继续这样的排序分组,直到按最次位关键码kd对各子组排序后。再将各组连接起来,便得到一个有序序列。
最低位优先(Least Significant Digit first)法,简称LSD法:先从kd开始排序,再对kd-1进行排序,依次重复,直到对k1排序后便得到一个有序序列。

基数排序

package test1;
import java.util.Arrays;
/*** @author 小徐同学** 2021年10月30日*/
public class RadixSort {public static void sort(int[] number, int d) //d表示最大的数有多少位{int k = 0;int n = 1;int m = 1; //控制键值排序依据在哪一位int[][] temp = new int[10][number.length]; //数组的第一维表示可能的余数0-9int[] order = new int[10]; //数组order[i]用来表示该位是i的数的个数while(m <= d){for(int i = 0; i < number.length; i++){int lsd = ((number[i] / n) % 10);temp[lsd][order[lsd]] = number[i];order[lsd]++;}for(int i = 0; i < 10; i++){if(order[i] != 0)for(int j = 0; j < order[i]; j++){number[k] = temp[i][j];k++;}order[i] = 0;}n *= 10;k = 0;m++;}}public static void main(String[] args){int[] data = {73, 22, 93, 43, 55, 14, 28, 65, 39, 81, 33, 100};System.out.println("排序前:"+Arrays.toString(data));RadixSort.sort(data, 3);System.out.println("排序后:"+Arrays.toString(data));}}

结果

排序前:[73, 22, 93, 43, 55, 14, 28, 65, 39, 81, 33, 100]
排序后:[14, 22, 28, 33, 39, 43, 55, 65, 73, 81, 93, 100]

11.桶排序

桶排序 (Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是 比较排序,他不受到 O(n log n) 下限的影响。

桶排序

代码

package test1;
import java.util.Arrays;
/*** @author 小徐同学** 2021年10月30日*/
public class BucketSort {public static void basket(int data[])//data为待排序数组{int n=data.length;int bask[][]=new int[10][n];int index[]=new int[10];int max=Integer.MIN_VALUE;for(int i=0;i<n;i++){max=max>(Integer.toString(data[i]).length())?max:(Integer.toString(data[i]).length());}String str;for(int i=max-1;i>=0;i--){for(int j=0;j<n;j++){str="";if(Integer.toString(data[j]).length()<max){for(int k=0;k<max-Integer.toString(data[j]).length();k++)str+="0";}str+=Integer.toString(data[j]);bask[str.charAt(i)-'0'][index[str.charAt(i)-'0']++]=data[j];}int pos=0;for(int j=0;j<10;j++){for(int k=0;k<index[j];k++){data[pos++]=bask[j][k];}}for(int x=0;x<10;x++)index[x]=0;}
}public static void main(String [] args){int [] arr ={99,55,44,33,20,11,25,69,50};System.out.println("排序前:"+Arrays.toString(arr));basket(arr);System.out.println("排序后:"+Arrays.toString(arr));}
}

结果

排序前:[99, 55, 44, 33, 20, 11, 25, 69, 50]
排序后:[11, 20, 25, 33, 44, 50, 55, 69, 99]

求最优连续子序列 使用分治算法

这种比较难以理解,是使用分治的这种思想很多动态规划算法非常像数学中的递推。我们如果能找到一个合适的递推公式,就能很容易的解决问题。

package test1;
/*** @author 小徐同学** 2021年10月30日*/
public class test{public static int matrixChain(int[] p, int[][] m, int[][] s) {int n = p.length - 1;for (int i = 1; i <= n; i++)// 本身为0m[i][i] = 0; for (int r = 2; r <= n; r++) {for (int i = 1; i <= n - r + 1; i++) { int j = i + r - 1;m[i][j] = m[i + 1][j] + p[i - 1] * p[i] * p[j];  // 求出Ai到Aj的连乘s[i][j] = i;  // 记录划分位置for (int k = i + 1; k < j; k++) {// 寻找是否有可优化的分割点int t = m[i][k] + m[k + 1][j] + p[i - 1] * p[k] * p[j];  // 公式if (t < m[i][j]) {m[i][j] = t;s[i][j] = k;}}}}return m[1][n];}/*** 输出 A[i:j] 的最优计算次序* @param i、j: 连乘矩阵下标* @param s: 存放分割位置下标的数组**/public static void traceback(int i, int j, int[][] s) {// 输出A[i:j] 的最优计算次序if (i == j) {// 递归出口System.out.print("A"+i);return;} else {System.out.print("(");// 递归输出左边traceback(i, s[i][j], s);// 递归输出右边traceback(s[i][j] + 1, j, s);System.out.print(")");}}public static void main(String[] args) {int[] p = new int[]{35,15, 5, 10, 20};int[][] m = new int[p.length][p.length];int[][] s = new int[p.length][p.length];System.out.println("最优值为: "+matrixChain(p, m, s));traceback(1, p.length-1, s);}
}

结果

最优值为: 7125
((A1A2)(A3A4))

Java实现汉诺塔

package test1;
import java.util.*;
import java.util.Scanner;
/*** @author 小徐同学** 2021年10月30日*/
public class shop {//用于记录移动的次数static int m = 0;//展示函数public static void move(int disk, char M, char N) {System.out.println("第" + (++m) + "次操作,将" + disk + "号盘从" + M + "移动到" + N);}public static void hanoi(int n, char A, char B, char C) {if(n == 1) {move(n, A, C);}else {hanoi(n - 1, A, C, B);move(n, A, C);hanoi(n - 1, B, A, C);}}public static void main(String[] args) {boolean i=true;while(i){Scanner in = new Scanner(System.in);System.out.println("请您输入hanoi的个数:");int a = in.nextInt();hanoi(a, 'A', 'B', 'C');System.out.println("总共使用" + m + "次");}}}

结果

请您输入hanoi的个数:
3
第1次操作,将1号盘从A移动到C
第2次操作,将2号盘从A移动到B
第3次操作,将1号盘从C移动到B
第4次操作,将3号盘从A移动到C
第5次操作,将1号盘从B移动到A
第6次操作,将2号盘从B移动到C
第7次操作,将1号盘从A移动到C
总共使用7次
请您输入hanoi的个数:

各个算法的数值

排序算法平均时间复杂度
冒泡排序O(n²)
冒泡排序O(n²)
选择排序O(n²)
插入排序O(n²)
希尔排序O(n1.5)
快速排序O(N*logN)
归并排序O(N*logN)
堆排序O(N*logN)
基数排序O(d(n+r))

算法基础

其实算法只是在于思想,理解这个算法比背会这个代码要好的多,完整的代码也只是不断的从基本算法的去添完整,防止一些意外的出界行为,重在理解算法。望共勉

附上我的源码,排序算法都在里面 Java算法全套代码

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. Google Earth Engine(GEE)——可视化:面积图详细参数调整

    例子 <html><head><script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script><script type="text/javascript">google.charts.load(current, {packages:[corechart]});google.ch…...

    2024/4/15 12:48:35
  2. Python的开始

    python的入门语法 python是一门弱数据类型语言 例&#xff1a; 语法&#xff1a; print() ----------- 打印输出 type()---------查看类型 ord() ------- 获取字符的整数的表示 chr()--------把编码转换为对应的字符串 \n ----------换行 数据类型&#xff1a; int 整型 …...

    2024/4/15 18:53:06
  3. 夜游对旅游行业的有哪些优势

    随着智能、科技的不断发展&#xff0c;身临其境的旅游体验将成为旅游产品的重要组成部分&#xff0c;挖掘自身地域文化特征&#xff0c;结合夜间经济的消费模式&#xff0c;因地制宜打造多维沉浸式夜游。 近几年来&#xff0c;随着人们夜经济的不断丰富&#xff0c;我国已逐渐成…...

    2024/4/16 18:07:03
  4. 盛迈坤电商:详情页面的优化方法

    在拼多多开店的过程中&#xff0c;商家要想做好店铺的运营管理&#xff0c;实现店铺有效转化的最好方式就是店铺的详情页&#xff0c;可以突出产品的优势&#xff0c;就像消费者充分展示产品&#xff0c;做好店铺的优势&#xff0c;从而实现有效转化。 对于网店的商家来说&…...

    2024/4/6 10:44:43
  5. idea设置单行注释的格式

    问题 编译器默认的快捷键生成的(ctrl /)单行注释&#xff0c;双斜线是定格的&#xff0c;这样看起来不是怎么优雅&#xff0c;想要做成跟代码之间只留一个空格的格式&#xff0c;就像阿里开发手册上推荐的单行注释的样子那样 问题解决 按截图上的顺序依次执行&#xff0c;就…...

    2024/4/16 18:07:40
  6. consul在node中的实现

    一、使用docker在本地电脑上启动安装consul 1、安装docker curl -fsSL https://get.docker.com | bash -s docker --mirror aliyun curl -sSL https://get.daocloud.io/docker | sh docker version2、使用docker下载consul docker pull consul3、启动服务 docker run -d -p 850…...

    2024/5/2 19:29:23
  7. 小程序实现两行滚动金刚区以及进度条

    金刚区是什么&#xff0c;可能还有很多小伙伴不了解&#xff0c;不了解的来补课吧。 看这张图就懂了&#xff1a; 什么是金刚区 金刚区模块是整个界面布局的核心功能区域&#xff0c;通常布局在页面顶部 Banner 之下&#xff0c;金刚区的功能模块不会固定化&#xff0c;会根…...

    2024/5/2 19:29:20
  8. 关于mybatis入门案例的一些奇怪报错

    对于刘昱江老师入门案例的一些我的报错&#xff08;奇怪的BUG增加了系列&#xff09; 1.Resources.getResourceAsStream报错 Resources后面只能点出class&#xff0c;直接打getResourceAsStream会报错&#xff08;应该是版本问题&#xff1f;日常唾弃Jack给的版本&#xff09…...

    2024/4/15 18:54:17
  9. 团体程序设计天梯赛(L2-015 互评成绩 (25 分))

    题目&#xff1a; 思路分析&#xff1a; 水题&#xff01;&#xff01;&#xff01; 代码实现&#xff1a; int main() {vector<double> result;int n, k, m, tmp, sum,max,min;cin >> n >> k >> m;for (int i 0; i < n; i) {sum 0;max 0; min…...

    2024/4/19 23:02:27
  10. 数组的一些细节问题

    数组赋值是引用赋值 int[] arr1{1,2,3};int[] arr2arr1;arr2[1]20;System.out.println(arr1[1]);二维数组 二维数组的四种声明方式 动态初始化 int[][] arrnew int[4][3]; 适用于确定的已知行数和列数的情况动态初始化的分步形式 int[][] arr;--------arrnew int[4][3];可以先…...

    2024/4/6 10:44:37
  11. stream().filter()利用|| 过滤多个条件

    有时候过滤的条件可能是条件a&#xff0c;也可能是条件b&#xff0c;这时候可以用下面这种方法&#xff1a; List<Member> mList members.stream().filter(item -> {if(item.getB().equals(true)||item.getB().equals(false)){}return true;}).collect(Collectors.to…...

    2024/4/23 1:16:44
  12. 简易检测wifi信号强度协助检测网络

    今天发个入门级的短文 电脑wifi信号看似满格&#xff0c;在排查网速问题的时候&#xff0c; 用个简单的方法 netsh wlan show interface 就可以&#xff0c;查看路由或者ap的连接情况&#xff0c; 下了几个软件&#xff0c;还是这个简单好用。 新建一个bat文件&#xff0c;…...

    2024/4/20 7:27:15
  13. python安装

    python的环境安装 一:下载 安装一个软件&#xff0c;首先要做的就是下载。 我们可以通过官方网站&#xff1a;http://www.python.org去下载它。 二:安装过程 –以3.8.2为例&#xff0c;开始安装过程。 1&#xff0c;当安装压缩包下载好以后&#xff0c;找到Python_3.8.2_x64.ex…...

    2024/4/15 18:53:57
  14. CentOS7升级gcc10

    gcc10.2 安装包获取&#xff1a; wget https://ftp.gnu.org/gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.gz解压包并进入&#xff1a; $ tar -zxvf gcc-10.2.0.tar.gz $ cd gcc-10.2.0安装编译所需要的依赖坏境 $ ./contrib/download_prerequisites建立临时文件并进行编译安装 $ cd…...

    2024/4/15 18:55:07
  15. Spring Boot项目在多环境下的命令行启动

    1、配置文件 一个项目在开发、测试、生产上的环境会有不同的配置&#xff0c;比如不同环境中数据库、redis就不一样等。因此如何根据不同的环境启动不同的配置文件 2、启动时带参数 命令行启动的时候带上参数--spring.profiles.active &#xff0c;使用java -jar xxxx.jar --…...

    2024/4/15 18:54:12
  16. OS的运行机制和体系结构

    ...

    2024/4/15 18:54:02
  17. 深度学习框架中的Dynamic Shape问题

    前言 最近这段时间实现了公司内部深度学习框架的dynamic shape的功能。这两天整理了一下&#xff0c;跟大家分享一下自己的一些想法。欢迎感兴趣的小伙伴留言一起讨论。 目录前言Dynamic Shape问题Dynamic Shape会带来什么问题不同框架是如何解决Dynamic Shape问题粗粒度框架如…...

    2024/4/15 18:54:07
  18. 海量数据的处理方案,高并发处理。

    转载:https://blog.csdn.net/xlgen157387/article/details/53230138《这个内容对我自己有用,转来用作自己今后的学习》一、网站应用背景开发一个网站的应用程序,当用户规模比较小的时候,使用简单的:一台应用服务器+一台数据库服务器+一台文件服务器,这样的话完全可以解决…...

    2024/4/18 0:41:59
  19. [环境配置/PWN]Pwn相关工具安装记录

    Web手&#xff0c;想要拓展下知识面&#xff0c;整理分享以下近期工具安装记录&#xff0c;转载还请注明来源 换源 建议先换源 配置python2.7版本 在做pwn相关工作时&#xff0c;我们最常用的Python版本就是2.7版。 安装Python尽量使用aptitude,他相对apt的优势在于能够更…...

    2024/4/5 7:33:41
  20. 【Pygame小游戏】Python版有迷宫嘛?原来藏在个地方呀~

    &#x1f4a6;前言 大家好&#xff0c;是我&#xff1a; 一大早高清无码好东西刚到手 就给大家安排推文的栗子同学上线放牛小编——一切随缘更新慢更新的我&#xff01; 决心痛改前非&#xff0c;每周争取能多写几篇。&#xff08;这个flag立在这里&#xff0c;完不成......…...

    2024/4/19 23:49:47

最新文章

  1. 71.网络游戏逆向分析与漏洞攻防-角色与怪物信息的更新-分析并利用角色与怪物创建的数据包

    免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果 现在的代码都是依据数据包来写的&#xff0c;如果看不懂代码&#xff0c;就说明没看懂数据包…...

    2024/5/2 22:09:28
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 职场口才提升之道

    职场口才提升之道 在职场中&#xff0c;口才的重要性不言而喻。无论是与同事沟通协作&#xff0c;还是向上级汇报工作&#xff0c;亦或是与客户洽谈业务&#xff0c;都需要具备良好的口才能力。一个出色的职场人&#xff0c;除了拥有扎实的专业技能外&#xff0c;还应具备出色…...

    2024/5/1 2:36:04
  4. Spring Boot 防护 XSS + SQL 注入攻击

    XSS跨站脚本攻击 ① XSS漏洞介绍 跨站脚本攻击XSS是指攻击者往Web页面里插入恶意Script代码&#xff0c;当用户浏览该页之时&#xff0c;嵌入其中Web里面的Script代码会被解析执行&#xff0c;从而达到恶意攻击用户的目的。XSS攻击针对的是用户层面的攻击&#xff01; ② XSS…...

    2024/5/1 14:31:01
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/1 17:30:59
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/2 16:16:39
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/2 9:28:15
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/2 15:04:34
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/1 4:32:01
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/2 9:07:46
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; 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
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在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