17种编程语言实现排序算法-基数排序

news2024/11/27 8:45:51

开源地址

https://gitee.com/lblbc/simple-works/tree/master/sort/

覆盖语言:C、C++、C#、Java、Kotlin、Dart、Go、JavaScript(JS)、TypeScript(TS)、ArkTS、swift、PHP。
覆盖平台:安卓(Java、Kotlin)、iOS(SwiftUI)、Flutter(Dart)、Window桌面(C#)、前端(微信小程序、uni-app、vue)、后端(Java、Kotlin、NodeJS、Python、PHP、Go、C、C++)、鸿蒙


image

1. 安卓Java版

开发工具:下载Android Studio


    private static void sort(int[] array) {
        int max = getMaxValue(array);
        for (int exp = 1; max / exp > 0; exp *= 10)
            countSort(array, exp);
    }

    private static void countSort(int[] array, int exp) {
        int[] tmpArr = new int[array.length];
        int[] bucketArr = new int[10];

        for (int i = 0; i < array.length; i++) {
            bucketArr[(array[i] / exp) % 10]++;
        }

        for (int i = 1; i < 10; i++) {
            bucketArr[i] += bucketArr[i - 1];
        }

        for (int i = array.length - 1; i >= 0; i--) {
            tmpArr[bucketArr[(array[i] / exp) % 10] - 1] = array[i];
            bucketArr[(array[i] / exp) % 10]--;
        }

        for (int i = 0; i < array.length; i++) {
            array[i] = tmpArr[i];
        }
    }

    private static int getMaxValue(int[] array) {
        int max = array[0];
        for (int i = 1; i < array.length; i++) {
            if (array[i] > max) {
                max = array[i];
            }
        }

        return max;
    }

image

2. 安卓Kotlin版

开发工具:下载Android Studio


private fun sort(array: IntArray) {
    val max = getMaxValue(array)
    var exp = 1
    while (max / exp > 0) {
        countSort(array, exp)
        exp *= 10
    }
}

private fun countSort(array: IntArray, exp: Int) {
    val tmpArr = IntArray(array.size)
    val bucketArr = IntArray(10)
    for (i in array.indices) bucketArr[array[i] / exp % 10]++
    for (i in 1..9) bucketArr[i] += bucketArr[i - 1]
    for (i in array.indices.reversed()) {
        tmpArr[bucketArr[array[i] / exp % 10] - 1] = array[i]
        bucketArr[array[i] / exp % 10]--
    }
    for (i in array.indices) {
        array[i] = tmpArr[i]
    }
}

private fun getMaxValue(array: IntArray): Int {
    var max = array[0]
    for (i in 1 until array.size) {
        if (array[i] > max) {
            max = array[i]
        }
    }
    return max
}

image

3. NodeJS

开发工具:下载Visual Studio Code


function sort() {
  let array = [2, 1, 5, 4, 3]
  var max = getMaxValue(array)
  for (var exp = 1; max / exp > 0; exp *= 10) {
    countSort(array, exp)
  }
}
function countSort(array, exp) {
  var tmpArr = Array(array.length).fill(0)
  var bucketArr = Array(10).fill(0)

  for (var i = 0; i < array.length; i++) {
    bucketArr[Math.floor(array[i] / exp) % 10]++
  }

  for (var i = 1; i < 10; i++) {
    bucketArr[i] += bucketArr[i - 1]
  }

  for (var i = array.length - 1; i >= 0; i--) {
    tmpArr[bucketArr[Math.floor(array[i] / exp) % 10] - 1] = array[i]
    bucketArr[Math.floor(array[i] / exp) % 10]--
  }

  for (var i = 0; i < array.length; i++) {
    array[i] = tmpArr[i]
  }
}
function getMaxValue(array) {
  var max = array[0]
  for (var i = 1; i < array.length; i++) {
    if (array[i] > max) {
      max = array[i]
    }
  }

  return max
}

image

4. Php

开发工具:下载Visual Studio Code

  public function sort()
    {
        $array = [2, 1, 5, 4, 3];
        $max = max($array);
        $max_digit = $this->get_digit($max);

        for ($i = 1; $i <= $max_digit; $i++) {
            $this->counting_sort($array, $i);
        }
        return var_dump($array);
    }

    public function counting_sort(&$array, $digit_num = false)
    {
        if ($digit_num !== false) {
            for ($i = 0; $i < count($array); $i++) {
                $array_temp[$i] = $this->get_specific_digit($array[$i], $digit_num);
            }
        } else {
            $array_temp = $array;
        }

        $max = max($array);
        $time_array = array();

        for ($i = 0; $i <= $max; $i++) {
            $time_array[$i] = 0;
        }

        for ($i = 0; $i < count($array_temp); $i++) {
            $time_array[$array_temp[$i]]++;
        }

        for ($i = 0; $i < count($time_array) - 1; $i++) {
            $time_array[$i + 1] += $time_array[$i];
        }

        for ($i = count($array) - 1; $i >= 0; $i--) {
            $sorted_array[$time_array[$array_temp[$i]] - 1] = $array[$i];
            $time_array[$array_temp[$i]]--;
        }

        $array = $sorted_array;
        ksort($array);
    }

    public function get_digit($number)
    {
        $i = 1;
        while ($number >= pow(10, $i)) {
            $i++;
        }

        return $i;
    }

    public function get_specific_digit($num, $i)
    {
        if ($num < pow(10, $i - 1)) {
            return 0;
        }
        return floor($num % pow(10, $i) / pow(10, $i - 1));
    }

image

5. Python

开发工具:下载PyCharm


array = [2, 1, 5, 4, 3]


def sort():
    max_num = max(array)
    it = 0
    while 10 ** it <= max_num:
        buckets = [[] for _ in range(10)]
        for num in array:
            digit = (num // 10 ** it) % 10
            buckets[digit].append(num)
        array.clear()
        for buc in buckets:
            array.extend(buc)

        it += 1

image

6. Swift(SwiftUI版)

开发工具:XCode(mac电脑自带)

var array = [2, 1, 5, 4, 3]

func sort() {
    var bucket = createBucket()
    let maxNum = getMaxValue(array: array)
    let maxLength = getNumberLen(number: maxNum)
    
    for digit in 1...maxLength {
        for item in array {
            let baseNumber = fetchBaseNumber(number: item, digit: digit)
            bucket[baseNumber].append(item)
        }
        
        var index = 0
        for i in 0..<bucket.count {
            while !bucket[i].isEmpty {
                array[index] = bucket[i].remove(at: 0)
                index += 1
            }
        }
    }
}

private func createBucket() -> Array<Array<Int>> {
    var bucket: Array<Array<Int>> = []
    for _ in 0..<10 {
        bucket.append([])
    }
    return bucket
}

private func getMaxValue(array: Array<Int>) -> Int {
    var maxNumber = array[0]
    for item in array {
        if maxNumber < item {
            maxNumber = item
        }
    }
    return maxNumber
}

func getNumberLen(number: Int) -> Int {
    return "\(number)".count
}

func fetchBaseNumber(number: Int, digit: Int) -> Int{
    if digit > 0 && digit <= getNumberLen(number: number) {
        var numbersArray: Array<Int> = []
        for char in "\(number)" {
            numbersArray.append(Int("\(char)")!)
        }
        return numbersArray[numbersArray.count - digit]
    }
    return 0
}

image

7. uni-app

开发工具:下载HBuilderX

sort() {
	let array = [2, 1, 5, 4, 3]
	var max = this.getMaxValue(array)
	for (var exp = 1; max / exp > 0; exp *= 10) {
		this.countSort(array, exp)
	}
},
countSort(array: number[], exp: number) {
	var tmpArr = Array(array.length).fill(0)
	var bucketArr = Array(10).fill(0)

	for (var i = 0; i < array.length; i++) {
		bucketArr[Math.floor(array[i] / exp) % 10]++
	}

	for (var i = 1; i < 10; i++) {
		bucketArr[i] += bucketArr[i - 1]
	}

	for (var i = array.length - 1; i >= 0; i--) {
		tmpArr[bucketArr[Math.floor(array[i] / exp) % 10] - 1] = array[i]
		bucketArr[Math.floor(array[i] / exp) % 10]--
	}

	for (var i = 0; i < array.length; i++) {
		array[i] = tmpArr[i]
	}
},
getMaxValue(array: number[]) {
	var max = array[0]
	for (var i = 1; i < array.length; i++) {
		if (array[i] > max) {
			max = array[i]
		}
	}

	return max
},

image

8. vue

开发工具:下载Visual Studio Code

sort() {
      let array = [2, 1, 5, 4, 3]
      var max = this.getMaxValue(array)
      for (var exp = 1; max / exp > 0; exp *= 10) {
        this.countSort(array, exp)
      }
    },
    countSort(array: number[], exp: number) {
      var tmpArr = Array(array.length).fill(0)
      var bucketArr = Array(10).fill(0)

      for (var i = 0; i < array.length; i++) {
        bucketArr[Math.floor(array[i] / exp) % 10]++
      }

      for (var i = 1; i < 10; i++) {
        bucketArr[i] += bucketArr[i - 1]
      }

      for (var i = array.length - 1; i >= 0; i--) {
        tmpArr[bucketArr[Math.floor(array[i] / exp) % 10] - 1] = array[i]
        bucketArr[Math.floor(array[i] / exp) % 10]--
      }

      for (var i = 0; i < array.length; i++) {
        array[i] = tmpArr[i]
      }
    },
    getMaxValue(array: number[]) {
      var max = array[0]
      for (var i = 1; i < array.length; i++) {
        if (array[i] > max) {
          max = array[i]
        }
      }

      return max
    },

9. 微信小程序

开发工具:下载微信开发者工具

sort() {
    let array = [2, 1, 5, 4, 3]
    var max = this.getMaxValue(array)
    for (var exp = 1; max / exp > 0; exp *= 10) {
      this.countSort(array, exp)
    }

    this.setData({
      array: array,
      arrayStr: this.convertToStr(array),
    })
  },
  countSort(array: number[], exp: number) {
    var tmpArr = Array(array.length).fill(0)
    var bucketArr = Array(10).fill(0)

    for (var i = 0; i < array.length; i++) {
      bucketArr[Math.floor(array[i] / exp) % 10]++
    }

    for (var i = 1; i < 10; i++) {
      bucketArr[i] += bucketArr[i - 1]
    }

    for (var i = array.length - 1; i >= 0; i--) {
      tmpArr[bucketArr[Math.floor(array[i] / exp) % 10] - 1] = array[i]
      bucketArr[Math.floor(array[i] / exp) % 10]--
    }

    for (var i = 0; i < array.length; i++) {
      array[i] = tmpArr[i]
    }
  },
  getMaxValue(array: number[]) {
    var max = array[0]
    for (var i = 1; i < array.length; i++) {
      if (array[i] > max) {
        max = array[i]
      }
    }

    return max
  },

image

10. 鸿蒙(ArkTS)

开发工具:下载DevEco Studio


  sort() {
    let array = [2, 1, 5, 4, 3]
    var max = this.getMaxValue(array)
    for (var exp = 1; max / exp > 0; exp *= 10) {
      this.countSort(array, exp)
    }
  }

  countSort(array: number[], exp: number) {
    var tmpArr = Array(array.length).fill(0)
    var bucketArr = Array(10).fill(0)

    for (var i = 0; i < array.length; i++) {
      bucketArr[Math.floor(array[i] / exp) % 10]++
    }

    for (var i = 1; i < 10; i++) {
      bucketArr[i] += bucketArr[i - 1]
    }

    for (var i = array.length - 1; i >= 0; i--) {
      tmpArr[bucketArr[Math.floor(array[i] / exp) % 10] - 1] = array[i]
      bucketArr[Math.floor(array[i] / exp) % 10]--
    }

    for (var i = 0; i < array.length; i++) {
      array[i] = tmpArr[i]
    }
  }

  getMaxValue(array: number[]) {
    var max = array[0]
    for (var i = 1; i < array.length; i++) {
      if (array[i] > max) {
        max = array[i]
      }
    }

    return max
  }

image

11. Go语言

开发工具:下载Visual Studio Code


var max_num_bucket int = 0

func radixSort(arr []int) {
	var queue map[int][]int
	var radix int = 0
	var base int = 1
	var key int
	var keys []int
	var index int
	max := arr[0]
	for _, val := range arr {
		if val > max {
			max = val
		}
	}
	for max != 0 {
		radix++
		max /= 10
	}

	for i := 0; i < radix; i++ {
		queue = make(map[int][]int)
		keys = nil
		index = 0
		for _, val := range arr {
			key = val % (base * 10) / base
			queue[key] = append(queue[key], val)
		}
		if len(queue) > max_num_bucket {
			max_num_bucket = len(queue)
		}
		for key := range queue {
			keys = append(keys, key)
		}
		sort.Ints(keys)
		for _, key := range keys {
			for _, val := range queue[key] {
				arr[index] = val
				index++
			}
		}
		base *= 10
	}
}

image

12. Java

开发工具:下载IntelliJ IDEA


    private static void sort(int[] array) {
        int max = getMaxValue(array);
        for (int exp = 1; max / exp > 0; exp *= 10)
            countSort(array, exp);
    }

    private static void countSort(int[] array, int exp) {
        int[] tmpArr = new int[array.length];
        int[] bucketArr = new int[10];

        for (int i = 0; i < array.length; i++) {
            bucketArr[(array[i] / exp) % 10]++;
        }

        for (int i = 1; i < 10; i++) {
            bucketArr[i] += bucketArr[i - 1];
        }

        for (int i = array.length - 1; i >= 0; i--) {
            tmpArr[bucketArr[(array[i] / exp) % 10] - 1] = array[i];
            bucketArr[(array[i] / exp) % 10]--;
        }

        for (int i = 0; i < array.length; i++) {
            array[i] = tmpArr[i];
        }
    }

    private static int getMaxValue(int[] array) {
        int max = array[0];
        for (int i = 1; i < array.length; i++) {
            if (array[i] > max) {
                max = array[i];
            }
        }

        return max;
    }

image

13. Kotlin

开发工具:下载IntelliJ IDEA


private fun sort(array: IntArray) {
    val max = getMaxValue(array)
    var exp = 1
    while (max / exp > 0) {
        countSort(array, exp)
        exp *= 10
    }
}

private fun countSort(array: IntArray, exp: Int) {
    val tmpArr = IntArray(array.size)
    val bucketArr = IntArray(10)
    for (i in array.indices) bucketArr[array[i] / exp % 10]++
    for (i in 1..9) bucketArr[i] += bucketArr[i - 1]
    for (i in array.indices.reversed()) {
        tmpArr[bucketArr[array[i] / exp % 10] - 1] = array[i]
        bucketArr[array[i] / exp % 10]--
    }
    for (i in array.indices) {
        array[i] = tmpArr[i]
    }
}

private fun getMaxValue(array: IntArray): Int {
    var max = array[0]
    for (i in 1 until array.size) {
        if (array[i] > max) {
            max = array[i]
        }
    }
    return max
}

image

14. Flutter

开发工具:下载IntelliJ IDEA


15. C语言

开发工具:下载Visual Studio


void sort(int *arr, int n)
{
	int max = arr[0];
	int base = 1;

	for (int i = 0; i < n; i++)
	{
		if (arr[i] > max)
		{
			max = arr[i];
		}
	}
	int *tmpArr = (int *)malloc(sizeof(int) * n);

	while (max / base > 0)
	{
		int bucket[10] = {0};
		for (int i = 0; i < n; i++)
		{
			bucket[arr[i] / base % 10]++;
		}
		for (int i = 1; i < 10; i++)
		{
			bucket[i] += bucket[i - 1];
		}
		for (int i = n - 1; i >= 0; i--)
		{
			tmpArr[bucket[arr[i] / base % 10] - 1] = arr[i];
			bucket[arr[i] / base % 10]--;
		}
		for (int i = 0; i < n; i++)
		{
			arr[i] = tmpArr[i];
		}
		base *= 10;
	}
	free(tmpArr);
}

image

16. C++

开发工具:下载Visual Studio


void sort(int *arr, int n)
{
	int max = arr[0];
	int base = 1;

	for (int i = 0; i < n; i++)
	{
		if (arr[i] > max)
		{
			max = arr[i];
		}
	}
	int *tmpArr = new int[n];
	while (max / base > 0)
	{
		int bucket[10] = {0};
		for (int i = 0; i < n; i++)
		{
			bucket[arr[i] / base % 10]++;
		}
		for (int i = 1; i < 10; i++)
		{
			bucket[i] += bucket[i - 1];
		}
		for (int i = n - 1; i >= 0; i--)
		{
			tmpArr[bucket[arr[i] / base % 10] - 1] = arr[i];
			bucket[arr[i] / base % 10]--;
		}
		for (int i = 0; i < n; i++)
		{
			arr[i] = tmpArr[i];
		}
		base *= 10;
	}
	delete tmpArr;
}

image

17. C#

开发工具:下载Visual Studio

public static void Sort(int[] array, int bucketNum = 10)
        {
            int maxLength = MaxLength(array);
            int[,] bucket = new int[bucketNum, array.Length + 1];
            for (int i = 0; i < maxLength; i++)
            {
                foreach (var num in array)
                {
                    int bit = (int)(num / Math.Pow(10, i) % 10);
                    bucket[bit, ++bucket[bit, 0]] = num;
                }
                for (int count = 0, j = 0; j < bucketNum; j++)
                {
                    for (int k = 1; k <= bucket[j, 0]; k++)
                    {
                        array[count++] = bucket[j, k];
                    }
                }
                for (int j = 0; j < bucketNum; j++)
                {
                    bucket[j, 0] = 0;
                }
            }
        }

        private static int MaxLength(int[] array)
        {
            if (array.Length == 0) return 0;
            int max = array[0];
            for (int i = 1; i < array.Length; i++)
            {
                if (array[i] > max) max = array[i];
            }
            int count = 0;
            while (max != 0)
            {
                max /= 10;
                count++;
            }
            return count;
        }

image

关于

厦门大学计算机专业|华为八年高级工程师
专注《零基础学编程系列》 http://lblbc.cn/blog
包含:Java | 安卓 | 前端 | Flutter | iOS | 小程序 | 鸿蒙
公众号:蓝不蓝编程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/177544.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

事件冒泡和时间捕获

事件冒泡和事件捕获 最近&#xff0c;在复习Vue的时候&#xff0c;发现自己对于事件冒泡和事件捕获的理解存在一定的错误。于是想写一份笔记来总结一下事件冒泡和事件捕获。✌✌✌ 一、事件 1、事件的三个阶段&#xff1a;事件捕获->事件目标->事件冒泡 捕获阶段&am…

MySQL 性能优化浅析及线上案例

作者&#xff1a;京东健康 孟飞 1、 数据库性能优化的意义 业务发展初期&#xff0c;数据库中量一般都不高&#xff0c;也不太容易出一些性能问题或者出的问题也不大&#xff0c;但是当数据库的量级达到一定规模之后&#xff0c;如果缺失有效的预警、监控、处理等手段则会对用户…

设计模式学习(十二):Decorator装饰器模式

一、什么是Decorator模式假如现在有一块蛋糕&#xff0c;如果只涂上奶油&#xff0c;其他什么都不加&#xff0c;就是奶油蛋糕。如果加上草莓&#xff0c;就是草莓奶油蛋糕。如果再加上一块黑色巧克力板&#xff0c;上面用白色巧克力写上姓名&#xff0c;然后插上代表年龄的蜡烛…

JavaEE5-Spring更简单的读取和存储对象

目录 1.存储Bean对象 1.1.前置工作&#xff1a;在配置文件中设置bean扫描的根路径&#xff08;重要&#xff09; 1.2.添加注解存储Bean对象到Spring中 1.2.1.类注解(添加到某个类上&#xff0c;将当前的类存储到Spring中)&#xff1a;Controller&#xff0c;Service&#x…

树,堆,二叉树的认识

1.树概念及结构 1.1树的概念 注意&#xff1a;树形结构中&#xff0c;子树之间不能有交集&#xff0c;否则就不是树形结构 1.2 树的相关概念 1.3 树的表示 树结构相对线性表就比较复杂了&#xff0c;要存储表示起来就比较麻烦了&#xff0c;既然保存值域&#xff0c;也要保存…

Gateway服务网关

Gateway服务网关一、网关介绍二、gateway快速入门1.创建gateway服务&#xff0c;引入依赖2.编写启动类3.编写基础配置和路由规则4.重启测试5.网关路由的流程图三、断言工厂四、过滤器工厂1.路由过滤器的种类2.请求头过滤器3.默认过滤器4.总结五、全局过滤器1.全局过滤器作用2.自…

fpga实操训练(系统开发和硬件接口)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 相信很多学习fpga的同学都会有这样的一个感受,一开始fpga学习还比较简单,但是一旦涉及到呼吸灯、uart、spi、iic、ddr2后面就会越来越难。遇到这样的困难之后,学习的激情一下子少…

从零搭建一个组件库(一)项目环境搭建

文章目录前言monorepo架构1.monorepo架构的优势2.使用pnpm搭建monorepo架构&#xff08;1&#xff09;全局安装pnpm&#xff08;2&#xff09;初始化项目&#xff08;3&#xff09;新建workspace.yaml文件4.不同包之间的相互引用TypeScript支持1.安装TypeScript2.初始化TypeScr…

http三次握手四次挥手详解

1、 TCP的三次握手和四次挥手实质就是TCP通信的连接和断开。 三次握手&#xff1a;为了对每次发送的数据量进行跟踪与协商&#xff0c;确保数据段的发送和接收同步&#xff0c;根据所接收到的数据量而确认数据发送、接收完毕后何时撤消联系&#xff0c;并建立虚连接。 四次挥…

C++6:STL-模拟实现string

string时STL中的模板库之一&#xff0c;类似于专门处理字符串的数据结构&#xff0c;在模拟实现并探讨其中构造的巧妙之处之前&#xff0c;我们短浅的认识一下STL是什么 目录 什么是STL STL的诞生 关于string string的模拟实现 构造函数和析构函数 实现简单的string打印 …

【蓝桥杯】简单数论2——快速幂矩阵快速幂

1、快速幂 1.1运算模 定义&#xff1a;模运算为a除以m的余数&#xff0c;记为a mod m&#xff0c;有a mod m a % m。 模运算是大数运算中的常用操作&#xff1a;如果一个数太大&#xff0c;无法直接输出&#xff0c;或者不需要直接输出&#xff0c;可以把它取模后&#xff0…

Android 深入系统完全讲解(37)

7.5 源码讲解 dlopen 打开动态库 dlsym 找到符号 (*print_func)(); 调用方法 我们可以看到&#xff0c;要使用一个 so 库的某个方法&#xff0c;就上面三步骤&#xff0c;加载 &#xff0c;查找 &#xff0c;使用 。我 们这里调用了 so 库中的 my_print 方法。 7.6 运行 我们把…

Linux——进程间通信

文章目录前言1. 进程间通信方式的一些标准&#xff1a;2. 管道2.1 什么是管道2.2 管道的原理2.3 匿名管道2.3.1 实例代码1. demo代码2. 总结管道的特点&#xff0c;理解以前的管道 |3. 扩展——进程池2.4 管道读写规则2.5 命名管道2.5.1 创建一个命名管道2.5.2 命名管道的打开规…

Python break用法详解

我们知道&#xff0c;在执行 while 循环或者 for 循环时&#xff0c;只要循环条件满足&#xff0c;程序将会一直执行循环体&#xff0c;不停地转圈。但在某些场景&#xff0c;我们可能希望在循环结束前就强制结束循环&#xff0c;Python 提供了 2 种强制离开当前循环体的办法&a…

路由处理及功能(实现了权限控制vue admin)

界面简化 将 template 改为&#xff1a; <template><div class"login-container"><el-formref"loginForm":model"loginForm":rules"loginRules"class"login-form"autocomplete"on"label-positio…

Mybatis遇到的脑残问题

一、MySQL的版本问题 有的教程mysql是8.0版本使用jar包不一样 <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0</version></dependency>然后我查了一下我的mysql版本是5.7版…

分支语句与循环语句

文章目录 什么是语句&#xff1f; 分支语句&#xff08;选择结构&#xff09;循环语句goto语句前言 一、什么是语句&#xff1f; C语句可分为以下五类&#xff1a; 1. 表达式语句 2. 函数调用语句 3. 控制语句 4. 复合语句 5. 空语句 控制语句用于控制程序的执行流程&#xff0…

第九层(1):初识STL

文章目录前情回顾初识STLSTL的诞生STL的基本概念STL六大组件STL中的容器、算法、迭代器容器算法迭代器容器、算法、迭代器的配合使用vector中的嵌套使用石碑倒下...后面还有石碑&#xff1f;本章知识点&#xff08;图片形式&#xff09;&#x1f389;welcome&#x1f389; ✒️…

为什么带NOLOCK的查询语句还会造成阻塞

背景客户反映HIS数据库在11点出现了长时间的阻塞&#xff0c;直到手动KILL掉阻塞的源头。请我们协助分析原因&#xff0c;最终定位到.NET程序中使用的SqlDataReader未正常关闭导致。现象登录SQL专家云&#xff0c;进入趋势分析&#xff0c;在活动会话中回溯11点一个小时内的运行…

【Ajax】防抖和节流

一、防抖什么是防抖防抖策略&#xff08;debounce&#xff09;是当事件被触发后&#xff0c;延迟 n 秒后再执行回调&#xff0c;如果在这 n 秒内事件又被触发&#xff0c;则重新计时。如果事件被频繁触发&#xff0c;防抖能保证只有最有一次触发生效&#xff01;前面 N 多次的触…