数据结构与算法之排序: 快速排序 (Ts, Py, Go版)

TypeScript 算法手册 【计数排序】 计数排序是一种非比较性的整数排序算法。它的核心思想是"统计数字出现次数,然后按顺序重建数组"。假如你是一位邮局工作人员,需要整理一大堆混乱的邮件,你采用这样的策略:首先统计每个邮政编码的邮件有多少封,按照邮政编码顺序,将邮件重新排列在分拣架上,这就是计数排序的基本思想。i 阅读详情

排序

  • 排序:把某个乱序的数组变成升序或降序的数组 (这里用数组来做举例)

快速排序

  • 该排序属于 分治 策略
  • 将一个问题分解为两个问题来计算,计算完成之后,就会得到子任务的解,这些解不是最终问题的解,还需要merge起来

Typescript 版算法实现


1 ) 简单版本,消耗内存

function quickSort(arr: number[]) {
	// 1.核心函数
	const qsFn = (arr: number[]) => {
	   if (arr.length <= 1) return arr;
	   const pivotIndex: number = Math.floor(arr.length / 2);
	   const pivot: number = arr.splice(pivotIndex, 1)[0];
	   const left: number[] = [];
	   const right: number[] = [];
	   arr.forEach(item => {
	   	if (item < pivot) left.push(item);
	   	if (item > pivot) right.push(item);
	   });
	  return qsFn(left).concat([pivot], qsFn(right));
	}
	// 2.执行核心函数
	const res: number[] = qsFn(arr); // res 用于返回最终结果
	arr.splice(0, arr.length, ...res); // 将最终排好序的结果赋值给原数组arr
	// 3. 可以有返回值
	return arr; // 可以用于返回值
};

const arr = [15, 4, 23, 52, 1];
quickSort(arr);
console.log(arr); //  [1, 4, 15, 23, 52]
  • 这里是 多开了一些存储空间,而且有递归, 一般生产环境不会使用这类内存占用较大的算法
  • 思路
    • 分区:从数组中,任意选择一个基准,所有比基准小的元素放在基准前面,比基准大的元素放在基准后面
      • 此时,基准已经找到自己合适的位置了
    • 递归:递归地对基准前后的子数组进行分区
      • 在子数组中找到一个基准,并把它放到合适的位置
      • 一直递归下去,基准前后子数组最后的长度都是1,不用再递归了,此时子数组已经排序好了
      • 等所有子数组都排序好,我们整个快排结束
  • 时间复杂度: O(nlogn)
    • 递归时间: logn, 每次劈成2半
    • 分区时间:n,for循环,找出比基准小和大的元素

2 )基于指针版本, 优化内存

function partition(arr: number[], left: number, right: number): number {
    // 选择最左边的元素作为基准值
    const pivot = arr[left];
    let i = left + 1; // 左指针
    let j = right; // 右指针

    // 当左指针小于等于右指针时循环
    while (i <= j) {
        // 右边指针向左移动直到找到小于基准值的元素
        while (i <= j && arr[j] >= pivot) {
            j--;
        }
        // 左边指针向右移动直到找到大于基准值的元素
        while (i <= j && arr[i] <= pivot) {
            i++;
        }
        // 交换左右指针所指向的元素,以确保左侧都小于基准值,右侧都大于基准值
        if (i < j) {
            [arr[i], arr[j]] = [arr[j], arr[i]];
        }
    }

    // 将基准值放到正确的位置(i 或 j 的位置上)
    [arr[left], arr[j]] = [arr[j], arr[left]];
    // 返回基准值的索引位置
    return j;
}

function quickSortFn(arr: number[], left: number, right: number): void {
    if (left < right) {
        // 获取分区后的基准值索引
        const pivotIndex = partition(arr, left, right);
        // 对基准值左侧子数组进行递归排序
        quickSortFn(arr, left, pivotIndex - 1);
        // 对基准值右侧子数组进行递归排序
        quickSortFn(arr, pivotIndex + 1, right);
    }
}

// 可以用于返回值,可以不用返回值
function quickSort(array: number[]): number[] {
    quickSortFn(array, 0, array.length - 1);
    return array;
}

console.log('----- 就地排序 ------');
const arr = [-2, 1, 0, -9, 1, 3, 9, 99, 9, -30, -100, 100, 88, 88, 20, 1, 0, 3, 4, 5, -20];
quickSort(arr);
console.log(arr)

3 )使用 三数取中法选择基准点 继续优化

function swap(array: number[], i: number, j: number) {  
    [array[i], array[j]] = [array[j], array[i]];  
}  
  
function partition(array: number[], low: number, high: number): number {  
    // 三数取中法选择基准点  
    const mid = Math.floor((low + high) / 2);  
    if (array[low] > array[high]) swap(array, low, high);  
    if (array[mid] > array[high]) swap(array, mid, high);  
    if (array[mid] > array[low]) swap(array, mid, low);  
  
    // 将基准点放到最左边  
    const pivot = array[low];  
    let i = low + 1;  
  
    for (let j = i; j <= high; j++) {  
        // 如果当前元素小于或等于基准点  
        if (array[j] <= pivot) {  
            // 交换元素  
            swap(array, i, j);  
            // 移动 i  
            i++;  
        }  
    }  
  
    // 将基准点放到正确的位置  
    swap(array, low, i - 1);  
    return i - 1;  
}  
  
function quickSort(array: number[], low: number, high: number) {  
    if (low < high) {  
        // 获取分区点  
        const pi = partition(array, low, high);  
  
        // 对基准点左右两边的子数组分别进行排序  
        quickSort(array, low, pi - 1);  
        quickSort(array, pi + 1, high);  
    }  
}  
  
function quickSortWrapper(array: number[]) {  
    quickSort(array, 0, array.length - 1);  
}  
  
// 示例使用  
const unsortedArray: number[] = [9, -20, 99, 3, 6, 8, 10, 1, 2, 1];  
quickSortWrapper(unsortedArray);  
console.log("Sorted array is:", unsortedArray);
  • 这个优化比较好,可用于生产环境
  • 思路
    • 基于高低指针,不断比较指针,满足条件进行交换
    • 也是基于递归实现,但不占用过多内存

总结

  • 比冒泡,选择,插入性能都要好, 分而治之
  • Chrome 曾经用快排作为sort排序的方法

Python3 版算法实现


1 ) 方案1

def quick_sort_v1(arr: list) -> list:
    def qs_fn(arr: list) -> list:
        if len(arr) <= 1:
            return arr
        pivot_index = len(arr) // 2
        pivot = arr.pop(pivot_index)
        left, right = [], []
        for item in arr:
            if item < pivot:
                left.append(item)
            elif item > pivot:
                right.append(item)
        return qs_fn(left) + [pivot] + qs_fn(right)
    
    res = qs_fn(arr)
    arr[:] = res  # 将最终排好序的结果赋值给原数组 arr
    return arr

# 示例用法
if __name__ == "__main__":
    arr = [15, 4, 23, 52, 1]
    quick_sort_v1(arr)
    print(arr)  # 输出: [1, 4, 15, 23, 52]

2 ) 方案2

def partition(arr: list, left: int, right: int) -> int:
    pivot = arr[left]
    i = left + 1
    j = right

    while i <= j:
        while i <= j and arr[j] >= pivot:
            j -= 1
        while i <= j and arr[i] <= pivot:
            i += 1
        if i < j:
            arr[i], arr[j] = arr[j], arr[i]

    arr[left], arr[j] = arr[j], arr[left]
    return j

def quick_sort_fn(arr: list, left: int, right: int) -> None:
    if left < right:
        pivot_index = partition(arr, left, right)
        quick_sort_fn(arr, left, pivot_index - 1)
        quick_sort_fn(arr, pivot_index + 1, right)

def quick_sort_v2(arr: list) -> list:
    quick_sort_fn(arr, 0, len(arr) - 1)
    return arr

# 示例用法
if __name__ == "__main__":
    arr = [-2, 1, 0, -9, 1, 3, 9, 99, 9, -30, -100, 100, 88, 88, 20, 1, 0, 3, 4, 5, -20]
    quick_sort_v2(arr)
    print(arr)

3 ) 方案3

def swap(array: list, i: int, j: int) -> None:
    array[i], array[j] = array[j], array[i]

def partition(array: list, low: int, high: int) -> int:
    mid = (low + high) // 2
    if array[low] > array[high]:
        swap(array, low, high)
    if array[mid] > array[high]:
        swap(array, mid, high)
    if array[mid] > array[low]:
        swap(array, mid, low)
    
    pivot = array[low]
    i = low + 1
    
    for j in range(i, high + 1):
        if array[j] <= pivot:
            swap(array, i, j)
            i += 1
    
    swap(array, low, i - 1)
    return i - 1

def quick_sort(array: list, low: int, high: int) -> None:
    if low < high:
        pi = partition(array, low, high)
        quick_sort(array, low, pi - 1)
        quick_sort(array, pi + 1, high)

def quick_sort_wrapper(array: list) -> list:
    quick_sort(array, 0, len(array) - 1)
    return array

# 示例用法
if __name__ == "__main__":
    unsorted_array = [9, -20, 99, 3, 6, 8, 10, 1, 2, 1]
    sorted_array = quick_sort_wrapper(unsorted_array)
    print("Sorted array is:", sorted_array)

Golang 版算法实现


1 ) 方案1

package main

import (
	"fmt"
)

func quickSortV1(arr []int) []int {
	var qsFn func([]int) []int
	qsFn = func(arr []int) []int {
		if len(arr) <= 1 {
			return arr
		}
		pivotIndex := len(arr) / 2
		pivot := arr[pivotIndex]
		arr = append(arr[:pivotIndex], arr[pivotIndex+1:]...)
		left, right := make([]int, 0), make([]int, 0)
		for _, item := range arr {
			if item < pivot {
				left = append(left, item)
			} else if item > pivot {
				right = append(right, item)
			}
		}
		return append(append(qsFn(left), pivot), qsFn(right)...)
	}

	res := qsFn(arr)
	copy(arr, res)
	return arr
}

func main() {
	arr := []int{15, 4, 23, 52, 1}
	quickSortV1(arr)
	fmt.Println(arr) // 输出: [1, 4, 15, 23, 52]
}

2 ) 方案2

package main

import (
	"fmt"
)

func partition(arr []int, left, right int) int {
	pivot := arr[left]
	i := left + 1
	j := right

	for i <= j {
		for i <= j && arr[j] >= pivot {
			j--
		}
		for i <= j && arr[i] <= pivot {
			i++
		}
		if i < j {
			arr[i], arr[j] = arr[j], arr[i]
		}
	}

	arr[left], arr[j] = arr[j], arr[left]
	return j
}

func quickSortFn(arr []int, left, right int) {
	if left < right {
		pivotIndex := partition(arr, left, right)
		quickSortFn(arr, left, pivotIndex-1)
		quickSortFn(arr, pivotIndex+1, right)
	}
}

func quickSortV2(arr []int) []int {
	quickSortFn(arr, 0, len(arr)-1)
	return arr
}

func main() {
	arr := []int{-2, 1, 0, -9, 1, 3, 9, 99, 9, -30, -100, 100, 88, 88, 20, 1, 0, 3, 4, 5, -20}
	quickSortV2(arr)
	fmt.Println(arr)
}

3 ) 方案3

package main

import (
	"fmt"
)

func swap(arr []int, i, j int) {
	arr[i], arr[j] = arr[j], arr[i]
}

func partition(arr []int, low, high int) int {
	mid := (low + high) / 2
	if arr[low] > arr[high] {
		swap(arr, low, high)
	}
	if arr[mid] > arr[high] {
		swap(arr, mid, high)
	}
	if arr[mid] > arr[low] {
		swap(arr, mid, low)
	}

	pivot := arr[low]
	i := low + 1

	for j := i; j <= high; j++ {
		if arr[j] <= pivot {
			swap(arr, i, j)
			i++
		}
	}

	swap(arr, low, i-1)
	return i - 1
}

func quickSort(arr []int, low, high int) {
	if low < high {
		pi := partition(arr, low, high)
		quickSort(arr, low, pi-1)
		quickSort(arr, pi+1, high)
	}
}

func quickSortWrapper(arr []int) []int {
	quickSort(arr, 0, len(arr)-1)
	return arr
}

func main() {
	unsortedArray := []int{9, -20, 99, 3, 6, 8, 10, 1, 2, 1}
	sortedArray := quickSortWrapper(unsortedArray)
	fmt.Println("Sorted array is:", sortedArray)
}
TypeScript 算法手册 【基数排序】 基数排序是一种非比较性的整数排序算法,它的核心思想是"按位排序"。想象你是一位军需官,需要整理一大批军需物资。这些物资的编号是由多位数字组成的,比如"23145"、"10234"等。你采用这样的策略:先按物资编号的最后一位数字排序,然后是倒数第二位,倒数第三位,以此类推,直到第一位。每一轮排序后,物资的顺序会越来越接近最终的正确顺序。这就像是你在一步步地将物资放到正确的仓库位置上,最终形成一个完美有序的军需仓库,这就是基数排序的基本思想。i++) { 阅读详情

相关推荐

ChatGPT版本解析与API集成开发实战指南

自然语言处理(NLP)作为人工智能的核心技术,通过深度学习模型实现对人类语言的理解和生成。其原理基于Transformer架构,通过自注意力机制捕捉文本中的长距离依赖关系。在技术价值层面,NLP技术显著提升了人机交互的效率和自然度,为开发者提供了强大的语言处理能力。在实际应用场景中,API集成开发成为将AI能力融入业务系统的关键路径,特别是在代码生成、技术文档编写等开发场景中发挥重要作用。本文围绕ChatGPT版本管理这一热点话题,结合API调用和错误处理等实用技术,为开发者提供从环境配置到生产部署的完整解

weixin_34302798的博客 411

数据结构与算法----TypeScript版本(排序篇)

十种经典排序算法 0 算法概述 0.1 算法分类: 排序算法可以分为两大类: 1.比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 2.非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。 0.2 算法复杂度: 0.3 相关描述概念: 1.稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。 2.不稳定:如果a原本在b的前面,而a=b,排序之

BayMin0-0的博客 1493

Codestral API 实战指南:FIM 填空与低温度确定性代码生成

代码生成模型正从通用对话式补全,转向面向开发工作流的精准语义理解与结构化输出。其核心原理在于 Fill-in-the-Middle(FIM)上下文嵌入机制与低温度(temperature=0.0)约束下的确定性解码,二者协同保障生成结果在类型安全、语法合规与跨语言惯用法层面的高度一致性。这种技术价值显著提升自动化场景可靠性——尤其适用于 CI/CD 中的脚本生成、IDE 内联补全及单元测试自动编写等工程化任务。本文聚焦 Codestral 这一专为开发者优化的代码大模型,深入解析其 API 调用基座搭建、F

459

TypeScript 自定义数组排序

TypeScript 自定义数组排序前言代码基本原理基本类型排序复杂类型排序输出 前言 对列表进行排序(根据自定义规则)。 代码 基本原理 .sort使用属性相减(a-b)获取一个基本类型(-1,0,1),如果小于0则将元素放到前面,如果大于0则放到后面,如果等于0则随缘(不同浏览器会有不同解析方式)。 .sort()采用返回数字的函数,而不是布尔值。 如果第一项较小,则需要返回负值; 如果它更大,则为正;如果相等,则为零。 —— 出处:https://cloud.tencent.com/develope

SlowFeather's blog 7072

U-net复现pytorch版本 以及制作自己的数据集并训练

GitHub链接: https://github.com/milesial/Pytorch-UNet 论文链接:

candice5566的博客 3万+

MAX31865三线PT100测温实战:配置、接线与代码全解析

本文详细解析MAX31865三线PT100测温的配置、接线与代码实现。通过实战经验分享,介绍如何利用MAX31865芯片实现高精度温度测量,重点讲解三线制接法的自动误差补偿功能,并提供完整的寄存器配置、SPI通信和温度转换算法,帮助开发者快速解决工业测温中的常见问题。

ss78901的博客 760

手写排序算法并比较

冒泡 快速排序 堆排序 选择排序 插入选择 希尔排序 归并排序 1.冒泡排序 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 算法描述 比较相邻的元素。如果第一个比第二个大,就交换它...

兰陵鸡王的博客 865

【邻接表存图模板】vector邻接表、数组邻接表、链式前向星

一、目录 一、目录 二、前言 三、邻接表“详解” (一)边的信息 (二)几种邻接表的实现方法“详解” 1.数组邻接表 代码 2.vector邻接表 代码 vector邻接表还有一种魔性写法: 3.链式前向星 代码 四、总结 二、前言 本来之前自己太弱了,一直只会用邻接矩阵,后来发现邻接表才是主流... 参考&特别鸣谢: https://www.cnblog...

十里寒塘路♣烟花一半醒 3116

数据结构与算法之堆: LeetCode 215. 数组中的第K个最大元素 (Ts, Py, Go版)

1 )基于js中原生sort api。2 )基于堆的数据结构和堆排序的方法。3 )基于冒泡排序。 4 ) 基于快速排序。

Wang的专栏 481

[图解]SysML与EA实战:住宅安全系统接口块设计全解析

本文详细解析了使用SysML和EA工具进行住宅安全系统接口块设计的全流程。从系统上下文图入门到接口块实战技巧,涵盖块定义图与内部块图的视角转换,以及多图协同建模方法论。特别分享EA工具的高效操作指南和常见问题避坑建议,帮助工程师掌握精确信号定义、端口方向设置等关键技能,提升安防系统设计效率。

weixin_29234509的博客 334

[ATF]-smc指令详解

1、在ree/tee调用smc之前 2、调用smc之后,cpu触发同步异常,进入ATF的sync_exception_aarch64—>handle_sync_exception—>smc_handler64处理函数 在smc_handler64中又调用了smc_handler func smc_handler64 /* ---------------------------------------------- * Detect if this is a RUN_IMAGE or ot

baron-周贺贺-代码改变世界ctw 1万+

7种排序算法动画详解:从冒泡到堆排序的实战指南

排序算法是编程基础中的核心知识,也是面试和实际开发中频繁使用的技能。《Hello 算法》项目提供了动画图解、一键运行的数据结构与算法教程,支持 Java, C++, Python 等多种语言,帮助开发者直观理解排序算法的工作原理。本文将通过动画图解方式,详细解析7种常用排序算法的实现过程、优缺点及适用场景,让你轻松掌握排序算法的精髓。 ## 排序算法概览:选择最适合你的排序方案 🚀 排序算法

gitblog_00974的博客 531

飞牛fnNAS搭建web版微信

摘要:本文介绍了一种通过Docker在飞牛NAS上部署微信客户端的方法,实现24小时同步微信聊天记录。具体步骤包括:1)激活飞牛NAS的Docker功能并配置镜像加速源;2)创建专用文件夹并下载docker-wechat镜像;3)设置容器参数并部署微信客户端;4)通过局域网或ZeroTier内网穿透实现远程访问。相比传统Windows/Linux方案,该方法资源占用更低,适合需要长期保存微信聊天记录的用户。

dgnankai的专栏 3343

多个视频ts文件合并

多个视频ts文件合并 前2天接到一个需求要把多个ts文件合并。 大致思路是:先下载需要的ts文件,放到一个目录中,修改文件名保持一致,合并成一个文件。 百度了一下有很多方法: 1.简单傻瓜式:ffmpeg+Medlexo 缺点是可能几百个文件合成要十几分钟。 转:https://blog.youkuaiyun.com/qq_31070811/article/details/103607249?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFrom

wzhang1987的博客 5101

【模型之美】3、文本聚类与智能摘要,让AI帮你做个总结

在信息过载时代,文本聚类与摘要技术成为关键工具。本文提出了一种结合OpenAI Embedding与传统机器学习的方法,实现从文本预处理到智能分析的完整流程。技术方案分为三阶段:1)通过Embedding将文本转化为语义向量;2)采用K-Means等算法进行无监督聚类;3)利用大模型生成可解释的标签和摘要。实验证明,该方法能有效提升信息处理效率,如在新闻聚合系统中自动分类10,000篇文章,准确率较传统方法提高15%。方案包含实用代码示例,涵盖文本清洗、向量化、聚类优化等关键技术细节,可应用于对话记忆、舆情

2025博客之星Top81。专注AI工程化与架构实战。从分布式思维到模型部署,用工程化视角为你厘清AI落地的真实路径。 1443

YOLOv8改进 | 卷积模块 | 用DWConv卷积替换Conv【轻量化网络】

YOLOv8改进,yolov8,yolov8创新,yolov8涨点

kay_545 7160

rdpwrap.ini:Windows 更新后三步恢复多用户远程桌面(含 1400+ 构建补丁)

rdpwrap.ini 是 RDP Wrapper Library 的核心配置文件,为家庭版、专业版 Windows 提供多用户远程桌面方案。每次系统更新替换 termsrv.dll 后,旧补丁偏移即失效,本仓库持续跟进新构建。下文给出恢复与长期维护的做法。 ## rdpwrap.ini 结构速览:每一段配置各管哪一层 这一节回答"这个文件到底对系统动了什么"。整份 [rdpwrap.ini]

gitblog_00740的博客 445

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

如何快速管好 VRChat 好友不遗漏:VRCX 新手友好完整指南

VRCX 是一款免费开源的 VRChat 外部伴随工具,能自动记录好友的在线动态、相处时长和改名历史,还能把每张截图拍摄于哪个世界写进图片文件里,帮你把大社交圈打理得井井有条。 ## 玩 VRChat 一段时间后会遇到的麻烦 你有没有这样的经历:好友换了形象又改了名字,你一时对不上号;某张截图拍得特别好,半年后却想不起是在哪个世界拍的;想约人集合,又不知道对方一般什么时候在线。好友少的时候靠脑

gitblog_01111的博客 241

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

50个必知必会算法实战指南:多语言实现深度解析

Algo项目是一个专注于数据结构和算法实践的开源库,提供了50个核心算法的多语言实现方案。这个项目由前Google工程师创建,旨在帮助开发者通过实际代码掌握算法精髓,提升编程面试和工程实践能力。项目覆盖从基础数据结构到高级算法的完整知识体系,支持C/C++、Java、Python、Go、JavaScript、TypeScript、Rust、Scala、Swift、Kotlin、PHP、Object

gitblog_00311的博客 498

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

掌握VS Code调试可视化:5个提升编码效率的终极技巧

VS Code调试可视化(vscode-debug-visualizer)是一款能在调试过程中直观展示数据结构的强大扩展工具,帮助开发者快速理解程序运行状态,显著提升问题定位效率。无论是复杂的算法逻辑还是数据流转过程,都能通过可视化界面清晰呈现。 ## 为什么选择调试可视化工具? 传统调试依赖console.log或断点查看变量,面对数组、链表、树等复杂数据结构时往往力不从心。VS Code调

gitblog_00277的博客 345

保研机试准备

一 零碎知识 cin,cout速度会慢一点,如果输入 #include<iostream> //C++标准输入输出,cin/cout #include<cstdlib> #include<cstdio> //c标准输入输出,scanf/printf #include<algorithm> //常用算法,比如快速排序sort函数 #include<map><vector><string><set> //S

qq_37357873的博客 442

Hello-Algo项目开源协作指南

在当今技术快速发展的时代,数据结构与算法作为计算机科学的核心基础,其学习资源的质量直接影响着无数开发者的成长轨迹。《Hello 算法》项目以其独特的动画图解和跨语言支持,正在重新定义算法学习的体验。但这样一个庞大的开源项目,需要社区的力量才能持续完善和演进。 你是否曾想过:**"我的一个小小贡献,能否让全球的算法学习者受益?"** 答案是肯定的!本文将为你详细解析如何高效参与Hello-Algo...

gitblog_00960的博客 335

第七篇:代码生成与编译运行:多语言自动完成设计方案

Claude Code是一款具备代码生成、编译运行和自动化测试能力的AI编程助手。它支持Python、JavaScript、Go等主流语言,能自动完成从单文件生成到多文件项目构建的全流程。其核心优势在于"验证驱动的自动迭代"能力,通过执行代码、捕获错误并自动修复,实现类似TDD的开发循环。该工具可自动处理语法错误、依赖缺失等常见问题,但长时间运行进程需手动管理。最佳实践建议在配置文件中明确指定构建命令和环境要求。

我是一个扣子,优快云博客专家,阿里云专家。专注AI(代码智能体、OpenClaw、AI视频制作)与Java全栈(Java、MySQL、Redis)实战。坚持AI赋能开发,输出有深度的技术内容。 415

Kimi-K2.7-Code提示词工程:3个技巧让AI生成的代码质量提升40%

你是否曾经遇到过AI生成的代码需要反复修改才能使用?Kimi-K2.7-Code作为Moonshot AI推出的专业代码生成模型,通过专业的提示词工程技巧,可以让你的代码生成效率和质量提升40%以上!本文将为你揭秘三个关键的提示词工程技巧,帮助你充分利用这个强大的代码生成工具。 ## 🔍 理解Kimi-K2.7-Code的核心能力 Kimi-K2.7-Code是一个专门为代码生成优化的AI模

gitblog_00223的博客 545

Qwen3-Coder-Next 编程效率革命指南:从 IDE 集成到全流程自动化开发(低显存部署 + 多语言适配 + 单元测试自动生成)

Qwen3-Coder-Next 通过 低显存优化(7B 模型仅需 6GB 显存)、多语言统一建模(支持 20+ 主流语言)、智能测试生成(覆盖边界条件与异常分支)三大核心技术,实现了从 IDE 集成到全流程自动化的编程效率革命。

学海无涯,笃行致远 979

GLM-5.3开源编程模型实战:本地部署、多语言测试与工作流集成指南

大语言模型在代码生成领域的应用正从通用对话向专用编程模型演进。其核心原理在于通过海量高质量代码数据的专项训练,使模型深入理解编程语言的语法、语义和项目上下文,从而生成符合规范的代码片段乃至完整模块。这类技术的核心价值在于提升开发效率、保障代码一致性,并能在私有化部署场景下确保数据安全。典型的应用场景包括自动化代码补全、跨语言项目开发辅助、代码审查与调试解释等。本文聚焦于智谱AI最新发布的开源编程专用模型GLM-5.3,通过详尽的本地部署方案、多语言代码生成测试以及主流IDE集成实践,为开发者提供从环境搭建到

weixin_30666401的博客 473
上一篇: 数据结构与算法之排序: 冒泡排序 (Ts, Py, Go版)
下一篇: 数据结构与算法之排序: 插入排序 (Ts, Py, Go版)
Wang's Blog
博客等级 码龄12年 7438粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值