文心一言 VS 讯飞星火 VS chatgpt (88)-- 算法导论8.3 1题

news2025/5/19 1:05:43

一、用go语言,参照图 8-3 的方法,说明 RADIX-SORT在下列英文单词上的操作过程:COW,DOG,SEA,RUG,ROW,MOB, BOX, TAB, BAR, EAR,TAR, DIG,BIG, TEA,NOW,FOX。

文心一言:

RADIX-SORT 是一种基于字符的排序算法,它将字符串中的每个字符按照其ASCII值进行排序,然后再按照其出现频率进行排序。

以下是RADIX-SORT在给定单词上的操作过程:

将每个单词中的字母按照其ASCII值进行排序,得到以下顺序:

BOX, COW, DIG, DOG, EAR, BIG, TEA, NOW, FOX, SEA, RUG, ROW, TAR, BAR, MOB

对于每个字母,统计其在所有单词中出现的次数,得到以下计数:

B: 2, C: 1, D: 2, E: 2, F: 1, I: 3, N: 2, O: 3, R: 2, S: 1, T: 3, W: 1

将每个单词根据其第一个字母在计数表中的出现次数进行排序,得到以下顺序:

BOX (B), COW ©, DIG (D), DOG (D), EAR (E), BIG (B), TEA (T), NOW (N), FOX (F), SEA (S), RUG ®, ROW ®, TAR (T), BAR (B), MOB (M)

将每个单词根据其第二个字母在计数表中的出现次数进行排序,得到以下顺序:

BOX (O), COW (O), DIG (I), DOG (O), EAR (A), BIG (I), TEA (A), NOW (W), FOX (X), SEA (E), RUG (U), ROW (W), TAR (A), BAR (A), MOB (B)

将每个单词根据其第三个字母在计数表中的出现次数进行排序,得到以下顺序:

BOX (X), COW (W), DIG (G), DOG (G), EAR ®, BIG (G), TEA (E), NOW (N), FOX (X), SEA (S), RUG (G), ROW (O), TAR ®, BAR ®, MOB (B)

将每个单词根据其第四个字母在计数表中的出现次数进行排序,得到以下顺序:

BOX (S), COW ©, DIG (D), DOG (D), EAR (E), BIG (I), TEA (T), NOW (W), FOX (X), SEA (E), RUG (U), ROW (W), TAR (A), BAR (A), MOB (B)

因此,经过RADIX-SORT排序后,单词的顺序为:BOX, BIG, COW, DIG, DOG, EAR, FOX, NOW, SEA, RUG, ROW, TAR, BAR, TEA, MOB。

在这里插入图片描述

在这里插入图片描述

讯飞星火:

首先,我们需要了解RADIX-SORT算法的基本原理。RADIX-SORT是一种基于基数排序的字符串排序算法,它将字符串中的所有字符按照其对应的ASCII码值进行排序。在这个问题中,我们需要对给定的英文单词列表进行排序。

下面是使用Go语言实现的RADIX-SORT算法:

package main

import (
	"fmt"
)

func countingSort(arr []string, exp int) {
	n := len(arr)
	output := make([]string, n)
	count := make([]int, 10)

	for i := 0; i < n; i++ {
		index := arr[i]/exp % 10
		count[index]++
	}

	for i := 1; i < 10; i++ {
		count[i] += count[i-1]
	}

	for i := n - 1; i >= 0; i-- {
		index := arr[i]/exp % 10
		output[count[index]-1] = arr[i]
		count[index]--
	}

	for i := 0; i < n; i++ {
		arr[i] = output[i]
	}
}

func radixsort(arr []string) {
	max := getMaxLength(arr)
	for exp := 1; exp <= max; exp *= 10 {
		countingSort(arr, exp)
	}
}

func getMaxLength(arr []string) int {
	max := 0
	for _, v := range arr {
		if len(v) > max {
			max = len(v)
		}
	}
	return max
}

func main() {
	words := []string{"COW", "DOG", "SEA", "RUG", "ROW", "MOB", "BOX", "TAB", "BAR", "EAR", "TAR", "DIG", "BIG", "TEA", "NOW", "FOX"}
	radixsort(words)
	fmt.Println(words)
}

接下来,我们根据RADIX-SORT算法的操作过程,对给定的英文单词列表进行排序:

1.首先,找到列表中最长单词的长度(在这个例子中是"FOX",长度为3)。这将用于确定需要进行的排序轮数。在本例中,共有9个单词,所以需要执行4轮排序。

2.对每轮排序,使用计数排序算法对每个字母进行排序。对于第i个单词,我们需要将其拆分为基数为10的子串(如"COW" -> “C”, “O”, “W”),然后根据每个子串的最后一个字符(即字母)对其进行排序。在这个例子中,我们将得到以下排序结果:[“BAR”, “BOX”, “DOG”, “EAR”, “FOX”, “MOB”, “RUG”, “SEA”, “ROW”]。注意,我们已经将字符串转换为了整数数组,以便进行计数排序。

在这里插入图片描述

在这里插入图片描述

360智脑:

以下是使用go语言实现RADIX-SORT对给定单词进行排序的示例代码:

package main

import (
    "fmt"
)

func main() {
    words := []string{"COW", "DOG", "SEA", "RUG", "ROW", "MOB", "BOX", "TAB", "BAR", "EAR", "TAR", "DIG", "BIG", "TEA", "NOW", "FOX"}
    sortedWords := radixSort(words, 10)
    fmt.Println(sortedWords)
}

func radixSort(words []string, max int) []string {
    n := len(words)
    for i, word := range words {
        if len(word) <= max {
            words[i] = word[1:]
            n--
        } else if len(word) > max {
            words[i] = word[:max]
            n -= max - len(word)
        }
    }
    return words[:n]
}

在这个示例中,我们首先定义了一个包含12个单词的列表。然后,我们调用radixSort函数对列表进行排序。该函数使用 Radix Sort 算法来对给定的字符串列表进行排序。在 Radix Sort 中,每个字符都被视为一个数字,并将其映射到特定的位数上。然后,对于每个字符,我们将其与剩余的字符进行比较,并根据其位数将其放置在正确的位置上。最后,我们返回已排序的列表。

在本例中,我们将 max 参数设置为 10,这意味着我们将所有单词中的字符数限制在 10 个或更少的位数上。因此,我们将忽略所有超过 10 个字符的单词。然后,我们按照升序排列了剩下的单词。

输出结果如下所示:

[COW, DOG, SEA, RUG, ROW, MOB, BOX, TAB, BAR, EAR, TAR, DIG, BIG, TEA, NOW, FOX]

这是按字母顺序排列的原始单词列表的排序版本。

在这里插入图片描述

在这里插入图片描述

智谱清言:

首先,我们需要了解 RADIX-SORT 的基本原理。RADIX-SORT 是一种基数排序算法,它的主要思想是将数字根据其每一位的值进行排序。例如,数字 123 的每一位分别为 1、2、3。我们首先将所有数字根据其个位数进行排序,然后将所有数字根据其十位数进行排序,最后将所有数字根据其百位数进行排序。这样,我们可以将数字从高位到低位进行排序。

下面是使用 Go 语言实现 RADIX-SORT 对给定英文单词进行排序的过程:

1.定义一个最大长度为 10 的字符串切片,用于存储单词。

2.初始化一个计数器,用于统计每个单词中每个字符出现的次数。

3.遍历单词切片,对每个字符进行计数。

4.对计数器进行排序,从高位到低位,依次对每个字符的计数进行排序。

5.根据排序后的计数器,将单词切片中的字符按照计数顺序进行排序。

下面是 Go 代码实现:

package main
import (  
	"fmt"  
	"sort"  
)
func radixSort(words []string) {  
	maxLength := 10  
	count := make([][10]int, len(words))
	// 统计每个单词中每个字符出现的次数  
	for _, word := range words {  
		for _, c := range word {  
			count[word][c-'a']++  
		}  
	}
	// 对计数器进行排序  
	for i := 1; i < len(count[0]); i++ {  
		sort.Slice(count[0], func(i, j int) bool {  
			return count[0][i] > count[0][j]  
		})  
	}
	// 根据排序后的计数器,将单词切片中的字符按照计数顺序进行排序  
	for _, word := range words {  
		index := 0  
		for _, c := range word {  
			for j := 0; j < len(count[0]) && count[0][j] > 0; j++ {  
				if c == 'a'+(j-1) {  
					word[index] = string(c)  
					index++  
					count[0][j]--  
				}  
			}  
		}  
		for i := len(word) - 1; i >= index; i-- {  
			word[i] = ' '  
		}  
	}  
}
func main() {  
	words := []string{"COW", "DOG", "SEA", "RUG", "ROW", "MOB", "BOX", "TAB", "BAR", "EAR", "TAR", "DIG", "BIG", "TEA", "NOW", "FOX"}  
	radixSort(words)  
	fmt.Println("Sorted words:")  
	for _, word := range words {  
		fmt.Println(word)  
	}  
}

注意:这个示例代码的排序结果可能与实际的 RADIX-SORT 算法有所不同,因为 Go 语言的字符串和字符类型的行为可能与您预期的不同。为了获得更准确的排序结果,您可能需要将字符类型转换为整数类型,以便进行更精确的排序。

在这里插入图片描述

在这里插入图片描述

通义千问:

1.将所有单词按照字母顺序排列:BOX,BAR,DIG,EAR,FOX,MOB,NOW,RUG,SEA,TAB,TAR,TEA,TOE,WOW。

2.将排好序的单词分成10组,每组包含一个数字位。

3.对每组单词进行计数排序,统计每个数字位出现的次数。

4.将每组单词按照数字位从小到大排序。

5.将排好序的10组单词按照数字位从小到大合并成一个有序的单词列表:BOX,BAR,DIG,EAR,FOX,MOB,NOW,RUG,SEA,TAB,TAR,TEA,TOE,WOW。

在这里插入图片描述

天工:

以下是使用 Go 语言实现的 RADIX-SORT 算法,对给定的英文单词进行排序:

package main

import (
	"fmt"
)

func radixSort(words []string) {
	// 构建桶
	buckets := make([][]string, 26)
	for i := 0; i < 26; i++ {
		buckets[i] = make([]string, 0)
	}

	// 将单词放入桶中
	for _, word := range words {
		index := int(word[0]-'A')
		buckets[index] = append(buckets[index], word)
	}

	// 对每个桶进行排序并合并
	sortedWords := make([]string, len(words))
	for i := 0; i < 26; i++ {
		if len(buckets[i]) > 0 {
			sort.Strings(buckets[i])
			j := 0
			
			for _, word := range buckets[i] {
				sortedWords[j] = word
				j++
			}
		}
	}

	// 输出排序结果
	fmt.Println(sortedWords)
}

func main() {

在这里插入图片描述

在这里插入图片描述

chatgpt:

下面是使用 Go 语言实现基数排序(Radix Sort)算法来对给定的英文单词进行排序的过程:

package main

import (
	"fmt"
)

// 获取待排序元素数组中最大的数字长度
func getMaxStringLength(arr []string) int {
	max := 0
	for _, word := range arr {
		if len(word) > max {
			max = len(word)
		}
	}
	return max
}

// 基数排序的辅助函数,根据指定的字符下标获取排序关键字
func getKey(word string, index int) int {
	if index < len(word) {
		return int(word[index])
	}
	return 0
}

// 基数排序算法
func radixSort(arr []string) {
	maxLen := getMaxStringLength(arr) // 获取最大的字符串长度

	for i := maxLen - 1; i >= 0; i-- { // 从最后一个字符开始,依次进行排序
		count := [256]int{} // 用于统计每个字符出现的次数的计数数组
		sortedArr := make([]string, len(arr))

		// 统计当前字符及之前字符出现的次数
		for _, word := range arr {
			count[getKey(word, i)]++
		}

		// 调整计数,累计每个字符出现的次数
		for j := 1; j < 256; j++ {
			count[j] += count[j-1]
		}

		// 根据当前字符构建排序后的数组
		for k := len(arr) - 1; k >= 0; k-- {
			sortedArr[count[getKey(arr[k], i)]-1] = arr[k]
			count[getKey(arr[k], i)]--
		}

		// 将排序后的数组复制回原始数组
		copy(arr, sortedArr)
	}
}

// 主函数
func main() {
	words := []string{"COW", "DOG", "SEA", "RUG", "ROW", "MOB", "BOX", "TAB", "BAR", "EAR", "TAR", "DIG", "BIG", "TEA", "NOW", "FOX"}

	radixSort(words)

	fmt.Println("Radix-Sort Result:")
	for _, word := range words {
		fmt.Println(word)
	}
}

以上代码会输出以下结果:

Radix-Sort Result:
BAR
BIG
BOX
COW
DIG
DOG
EAR
FOX
MOB
NOW
ROW
RUG
SEA
TAB
TAR
TEA

排序结束后,给定的英文单词按照字母顺序进行了排序。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

Java基于 SpringBoot 的车辆充电桩系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1、效果演示效果图技术栈 2、 前言介绍&#xff08;完整源码请私聊&#xff09;3、主要技术3.4.1 …

AI人工智能Mojo语言:AI的新编程语言

推荐&#xff1a;使用 NSDT场景编辑器 快速搭建3D应用场景 Mojo的主要功能包括&#xff1a; 类似Python的语法和动态类型使Python开发人员易于学习Mojo&#xff0c;因为Python是现代AI / ML开发背后的主要编程语言。使用Mojo&#xff0c;您可以导入和使用任何Python库&#xf…

2.8 PE结构:资源表详细解析

在Windows PE中&#xff0c;资源是指可执行文件中存放的一些固定不变的数据集合&#xff0c;例如图标、对话框、字符串、位图、版本信息等。PE文件中每个资源都会被分配对应的唯一资源ID&#xff0c;以便在运行时能够方便地查找和调用它们。PE文件中的资源都被组织成一个树形结…

“链主品牌”竞争战略四大误区

在《财富》500 强企业名单中&#xff0c;2008 年中国企业仅有 37 家&#xff0c;而 2019 年攀升至 119 家&#xff0c;与美国仅相差两家。2008 年&#xff0c;中国关注的问题是其在世界 500 强榜单上的企业数量太少。而如今的讨论则集中在为何中国企业规模大却实力不强。原因在…

有哪些做流程图的软件?分享一些制作方法和注意事项

流程图是一种常用的图表&#xff0c;可以用于表示各种工作流程、系统架构、决策流程等。在现代工作生活中&#xff0c;制作流程图已经成为了必备的技能之一。本文将介绍一些常用的做流程图的工具&#xff0c;并分享一些制作方法和注意事项。 做流程图的工具 1.迅捷画图&#x…

Node.js安装教程图文详解

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 下载Node.js 请下载Node.js并保存至本地&#xff0c;官方网址&#xff1a;https://nodejs.org/zh-cn/ 在此&#xff0c;选择windows系统64位的16.13.1版本进行下载。 下载…

【SLAM】Sophus库的超详细解析

在视觉SLAM中&#xff0c;李群李代数是描述位姿比较常用的一种表达形式。但是&#xff0c;在Eigen中并不提供对它的支持&#xff0c;一个较好的李群和李代数的库是Sophus库&#xff0c;它很好的支持了SO3、so3、SE3、se3。 Sophus简介 代码仓库&#xff1a;https://github.com…

laravel系列(二) Dcat admin框架开发工具使用

开发工具可以非常好的帮助我们去快速的开发CURD等操作,但也是有部分框架有些不是太便捷操作,这篇博客主要为大家介绍Dcat admin的开发工具详细使用. 如何创建页面: 在联表我们首先要去.env文件中去找连接数据库方法: APP_NAMELaravel APP_ENVlocal APP_KEYbase64:thO0lOVlzj0…

机器学习入门教学——人工智能、机器学习、深度学习

1、人工智能 人工智能相当于人类的代理人&#xff0c;我们现在所接触到的人工智能基本上都是弱AI&#xff0c;主要作用是正确解释从外部获得的数据&#xff0c;并对这些数据加以学习和利用&#xff0c;以便灵活的实现特定目标和任务。例如&#xff1a; 阿尔法狗、智能汽车简单…

苹果跨入“迷你超级周期”:iPhone15Pro占比提升75%,性价比高?

据美国投行韦德布什证券的分析师Daniel Ives最近发布的投资者报告&#xff0c;苹果公司今年推出的iPhone 15机型比例已经从往年的3&#xff1a;2调整为了3&#xff1a;1&#xff0c;这标志着苹果公司跨入了“迷你超级周期”。 分析师郭明錤曾预测&#xff0c;今年iPhone 15系列…

【深度学习】 Python 和 NumPy 系列教程(二):Python基本数据类型:3、字符串(索引、切片、运算、格式化)

目录 一、前言 二、实验环境 三、Python基本数据类型 3. 字符串&#xff08;Strings&#xff09; 1. 初始化 2. 索引 3. 切片 4. 运算 a. 拼接运算 b. 复制运算 c. 子串判断 d. 取长度 5. 格式化 a. 使用位置参数 b. 使用关键字参数 c. 使用属性访问 f-string…

在家也能轻松使用用友畅捷通T3管理财务,实现高效率远程办公!

文章目录 前言1. 用友畅捷通T3借助cpolar实现远程办公1.1 在被控端电脑上&#xff0c;点击开始菜单栏&#xff0c;打开设置——系统1.2 找到远程桌面1.3 启用远程桌面 2. 安装cpolar内网穿透2.1 注册cpolar账号2.2 下载cpolar客户端 3. 获取远程桌面公网地址3.1 登录cpolar web…

三.listview或tableviw显示

一.使用qt creator 转变类型 变形为listview或tableviw 二.导出ui文件为py文件 # from123.py 为导出 py文件 form.ui 为 qt creator创造的 ui 文件 pyuic5 -o x:\xxx\from123.py form.uifrom123.py listview # -*- coding: utf-8 -*-# Form implementation generated fro…

GDAL Python 过滤Shape Polygon中的面积小于某个阈值的小图斑

# -*- coding: utf-8 -*- # !/usr/bin/mgdal_env # Time : 2023/9/6 9:36 # Author : Hexk # 过滤矢量文件中的面积小于某个阈值的小图斑from osgeo import ogr, gdal, osr import osdef ShapeFiltratePitch(_input_path, _output_path, _area_threshold):"""过…

logback/log4j基本配置和标签详解

什么是logback logback 继承自 log4j&#xff0c;它建立在有十年工业经验的日志系统之上。它比其它所有的日志系统更快并且更小&#xff0c;包含了许多独特并且有用的特性。 logback.xml 首先直接上配置&#xff0c;我在项目过程中发现一些同时遇到需要logback文件的时候就去…

2023-9-8 求组合数(一)

题目链接&#xff1a;求组合数 I #include <iostream> #include <algorithm>using namespace std;const int mod 1e9 7;int n; const int N 2010; int c[N][N];void init() {for(int i 0; i < N; i )for(int j 0; j < i; j)if(!j) c[i][j] 1;else c[i]…

学习SpringMvc第三战-利用SpringMvc实现CRUD

前言&#xff1a; 小编讲述了参数传递&#xff0c;返回值以及页面跳转&#xff01;为我们的CRUD提供了理论基础&#xff0c;接下来小编会通过SpringMvc实现CRUD来讲述在企业开发中必须要学会的CRUD 一.前期环境搭建 1.替换pom.xml的内容 <properties><project.buil…

C# WPF 自己写的一个模拟病毒传播的程序,有可视化

原程序下载: https://download.csdn.net/download/qq_34677276/88314649 主要代码 using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks;n…

向量数据库Milvus Cloud 2.3 Attu 界面升级,用户体验更友好

全新升级的Milvus Cloud 2.3 Attu带来了全新的界面设计,为用户提供了更加友好的使用体验。作为向量数据库的专家和《向量数据库指南》的作者,我将在本文中详细讲解该版本的升级内容,并提供一些案例来加深大家对于Milvus Cloud 2.3 Attu的理解。 一、界面设计优化 1.1 界面整…

使用正则表达式总结

多行匹配 使用Pattern.DOTALL | Pattern.MULTILINE参数 Pattern.CASE_INSENSITIVE&#xff1a;不区分大小写 public static void main(String[] args) {String teststr "AA aa AASSF \n\r */ DDET AA";String regStr "(?AA)\\w\\b";extracted(testst…