判断字符串是否在数组中,你会怎么写?

in_array 函数大部分小伙伴第一时间想到的答案就是:in_array 函数啦,是吧,这是PHP内置的函数,可以判断字符串是否在数组中:<?php $arr = ['str1', 'str2', 'str3']; var_dump('str4', $arr);但是吧,这种写法效率不高,特别是数组中元素非常多的时候。TA的时间复杂度取决于数组的长度,也就是N。isset 方法$arr =

- 阅读全文 -

java实现希尔排序

希尔排序是插入排序的升级版,主要是减少插入排序的数组搬移次数,代码如下:package com.xiaoteng; import java.util.Arrays; public class ShellSort { public int[] sort(int[] a) { int size = a.length / 2; while (size !=

- 阅读全文 -

java实现插入排序

package com.xiaoteng; import java.util.Arrays; public class InsertSort { public int[] sort(int[] a) { int[] b = new int[a.length]; for (int i = 0; i < a.length; i++) {

- 阅读全文 -

java实现选择排序

选择排序主要步骤:第一步,找出1-n个数中的最小(大)值与第一个元素交换第二步,找出2-n中的最小(打)值与第二个元素交换以此类推具体代码:package com.xiaoteng; import java.util.Arrays; public class SelectSort { public int[] sort(int[] a) { for (int i =

- 阅读全文 -

java实现冒泡排序

package com.xiaoteng; import java.util.Arrays; public class PopSort { // 冒泡排序 // 核心:依次的对待排序的序列做前后大小比较,如果前面的大于后面的,就更换两个值,继续比较 // 每次一冒泡都会将最大值冒到最右端,所以,循环的次数为n,n-1,n-2....1 public int[

- 阅读全文 -

java实现基数排序

基数排序与另外七种排序不一样,它是基于分配模式的排序,它有两种模式,第一种MSD最高位优先,LSD最低位优先,这里以最低位优先举例:第一步,取待排序的序列中的数的个位数,将它们一次放在一个二维数组中,第一维是0-910个数字,第二维是个位数为第一维数的值第二步,取百位数字,然后在放到二位数组中,依次这样执行具体代码:package com.xiaoteng; import java.util.A

- 阅读全文 -

java实现堆积排序之最小堆积树

首先,了解下堆积排序的概念:第一步,将待排序序列转换为堆积树,如果是从小到大排序,那么转换为最小堆积树,如果是从大到小排序,那么就是最大堆积树第二步,取出该堆积树的树根,然后对剩余的数重新组成堆积树,重复第一步最小堆积树特点:整个序列中,树根是最小的数。最大堆积树特点:整个序列中,树根是最大的数。最小堆积树实现的堆积排序如下:package com.xiaoteng; import java.u

- 阅读全文 -