问题标签 [insertion-sort]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 如何执行插入排序但检查数组中元素的属性而不仅仅是元素?
抱歉,我确定这很简单,但我很累,无法弄清楚。
我有一个元素数组,每个元素实际上是一个粒子,它是一个数据结构(c 中的结构),其中包含粒子当前位置(int x,y,z)。我想比较元素 x 位置而不仅仅是元素本身。
查看wikipedia上的伪代码,我试图对其进行修改以比较我想要的属性,但我认为我做错了什么(可能很简单)。
这是我修改的内容:
如果有人能指出我的错误,那就太好了!
亚当
performance - 在经常插入排序的列表中插入项目
我有一个经常插入排序的列表。是否有一个好的位置(除了结尾)可以添加到这个列表中以最小化插入排序必须做的工作?
algorithm - InsertionSort vs. InsertionSort vs. BinaryInsertionSort
我有几个关于插入排序的不同实现的问题。
实施1:
实施2:
这是我的第一个问题:人们应该认为第一个版本应该比第二个版本快一点(因为分配较少),但事实并非如此(或者至少差异可以忽略不计)。但为什么?
其次,我想知道Java的 Arrays.sort() 方法也使用了第二种方法(可能是因为代码重用,因为在不同的地方使用了 swap 方法,可能是因为它更容易理解)。
实现3(binaryInsertionSort):
二进制插入类型是否有任何实际用途,还是更像是一种理论上的东西?在小数组上,其他方法要快得多,而在更大的数组上,mergesort/quicksort 的性能要好得多。
recursion - 需要帮助理解插入排序
在这段代码中这是如何工作的(java):
我是从伯克利的一个 CS 课上得到的,我正在网上学习,自学。这不是家庭作业(我希望是但不是那么幸运)。我不明白的是:
假设 A[] 中的数字是 8、2、10、5、4、12。当我在上面使用它们时,我在迭代中得到了这个,跟踪它。
- 最高的下标是 U,或者在这种情况下是 12,U-1 是 4,不进行交换
- U 现在是 4(递归 U-1),它上面的数字是 5(另一个 U-1)。他们被交换了。
- U 现在是 4,因为四个刚刚上移,而 10 是 U-1,它们被交换了。
我的序列现在是 8,2,4,10,5,12。
我的问题是如何获得我已经通过的数字?例如,如果我从不回到那个下标进行测试,我将如何获得五个。
我认为我没有正确跟踪程序并且我对递归感到困惑。为此,请假设交换已正确完成。
谢谢你。
瑟
c++ - 通过 x86 程序集(嵌入在 C++ 中)对数组进行排序??可能的?
我第一次玩 x86 程序集,但我不知道如何对数组进行排序(通过插入排序)。我了解算法,但程序集让我感到困惑,因为我主要使用 Java 和 C++。这是我到目前为止所拥有的一切
基本上没有:(有什么想法吗??提前谢谢。
好的,这只会让我听起来像个白痴,但我什至无法更改 _asm 中的任何数组值
只是为了测试一下,我放了:
这给了我一个错误C2415:不正确的操作数类型
所以我尝试了:
这符合要求,但并没有改变数组......
c++ - 双链表插入排序错误
我已经从 10,000 个整数的文件中在双链接列表(从最高到最低)中实现了插入排序,并以相反的顺序输出到文件。
据我所知,我已经实现了这样一个程序,但是我在输出文件中注意到,一个数字不合适。其他所有数字都按正确顺序排列。
不合适的数字是重复的数字,但该数字的其他重复顺序正确。奇怪的是这个数字是如何被错误地放置的。此外,未排序的数字只有 6 个位置不同步。
我已经浏览了我的程序好几天了,不知道问题出在哪里,所以我向你寻求帮助。
下面是有问题的代码,
(旁注:我的问题可以自己删除吗?而是我的大学不会盗用我的代码,如果不是,如何删除?)
感谢您的时间。
java - Java - 以“正确”的方式实现排序算法
我目前正在使用 Java 实现各种排序算法,主要是为了好玩,但我正在努力解决如何“正确”地做到这一点。也就是说,我希望用户能够在任何可比较的东西上调用选择的排序算法 - int
s、long
s、String
s、boolean
s(实际上,这些在 Java 中是否可比较?),他们自己的类;任何。问题是如何做到这一点。
我正在考虑使用一个类来表示排序算法,因此使用通用列表或其他任何东西()存储要排序的东西List<E>
。这也将允许我使用多个构造函数,从而允许用户以各种形式传入数据 - 列表、数组等。这是正确的方法吗?我目前的问题是我不希望用户在想要对某些东西进行排序时必须创建一个类,我宁愿它能够被称为类似System.out.println
或类似的东西。
对于一个看似基本的问题,我深表歉意,但我只是在学习编程语言。对于在一家软件公司从事暑期工作的 2 年级计算机专业学生来说,这有点可笑,但您会惊讶于我的大部分工作只需要很少的编程知识……通常需要更多的设计知识。
编辑:
为了清楚起见,我的三个主要问题是:
- 是让用户创建一个类来进行排序,还是在用户导入的类中有一个静态方法更好?
- 是否可以轻松处理原始数据类型和通用对象?由于我希望能够处理任何实现可比较(或类似)的通用对象,因此这会导致原语出现问题(因为它们没有实现任何东西;))。
- 处理通用输入的最佳方法是什么 - 在尝试对它们进行排序之前我应该检查什么(例如,实现 Comparable)?
matlab - MATLAB 错误 - ??? 尝试去引用非结构数组字段
我正在 MATLAB 中编写插入排序。我这样调用我的函数:
但是当我运行它时,我得到了错误
这是我的原始代码:
有人知道我在做什么错吗?
c# - 在 C# 中对字符串数组进行插入排序
如果我有一个字符串数组,例如
如何使用插入排序对这个数组进行排序?
维基百科有一些例子:https ://en.wikibooks.org/wiki/Algorithm_implementation/Sorting/Insertion_sort#C.23
和
但它似乎不适用于我的字符串数组,除非我做错了什么。
我会不会跑
sorting - 在多个数组上排序方法的运行时间
我有各种排序方法,它们都对相同的 100,000 个随机数数组进行排序。
我正在使用以下方法来查找每个的运行时
以下为随机数数组
我该如何修改它,以便我可以让它们中的每一个对 100 个数组而不是一个数组进行排序,并计算每个数组的时间?例如。运行1 - 23ms;运行 2 - 25 毫秒;... 运行 100 - 22 毫秒
编辑: 我还有最后一件事要做。所以每次迭代都会以几种方式对数组进行排序,比如说插入、合并和快速排序。所以说插入 = 300 毫秒,合并 = 200 毫秒,快速 = 100 毫秒。对于每次迭代,我需要找到排序最快的方法。
我知道这是一个简单的最小/最大类型的事情,你在较低的编程课程中做了一千次。将每个值放入数组并使用 array.min 调用会更容易吗?(不管它实际上是什么,Java 语法的新手..)