vb排序算法比较

2.基本要求
实现大量数据进行排序时几种排序算法的比较。详细要求如下:
n 启动时,可以对初始的几个数值进行排序。
n 随机生成比较多的整数。要求数值在一个整数的所有范围之内生成(即2个字节)。
n 对于基本要求中的排序方法可实现升序和降序。
n 实现使用选择排序、冒泡排序。
u 可以计算排序的初始时间和结束时间以及排序所用时间。
u 可以比较几种排序算法的循环次数。
u 支持显示的背景设置,可以设置成任意色彩
3.创新要求
在基本要求达到后,进行创新设计,创新方向提示如下:
★ 插入排序、快速排序。
★ 增加希尔排序。
★ 增加桶排序。
★ 增加堆排序。
★ 其它创新(有一定难度,实现代码在30行以上)。
三、设计方法和基本原理
1.问题描述
程序界面可以参考图(也可自己设计,完成功能即可)。本设计题目是使用和比较多种排序方法,可以使用户充分了解多种排序方法之间的区别和特性。
2.问题的解决方案
①设计程序界面
因为用的是基本控件,界面设计没有什么难度,照样子拼就可以了。
②编写代码
包括事件处理过程和功能函数,还有必要的声明。变量声明部分声明本程序所需要的变量和数组。要添加必要的程序说明语句。
事件处理包括下面的主要事件:
Form_Load()
作一些初始化的工作。在初始列表框中预先装入几个数据,可以在用户不生成随机数的情况下也能进行排序。
CommandX_Click()
处理各个命令。
Select Case cmbSorts.ListIndex (cmbSorts为选择排序方法列表框)
调用不同的排序方法子程序。
四、主要技术问题的描述
本题中的难点并不在于界面设计,只需要放标签、按钮和列表框。核心问题各个排序算法的实现。
1.随机生成多个整数,并放入数组中
由于生成随机数大家比较熟悉,这里不在多说,但是要注意随机数的范围应该比较大,最少是一个整数(2个字节)所能表示的范围中的任意数。
2.排序时间的计算
由于计算时间很短,一般都在ms级,所以这里建议把timer转化成变体来显示。
Dim I
I = Timer
lblBegin = "起始时间: " & I
3.循环次数的计算
这个问题就比较简单了,只需在排序子程序中加一个计数器即可。
4.几种排序算法的思路
选择排序和冒泡排序就不用说了,课本中已经讲过。所以这里只介绍其他几种。但仍需自己翻阅资料。
ü 插入排序(Insertion Sort) 基本思想:每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适当位置,使数列依然有序;直到待排序数据元素全部插入完为止。
ü 快速排序(Quick Sort) 基本思想:在当前无序区R[1..H]中任取一个数据元素作为比较的"基准"(不妨记为X),用此基准将当前无序区划分为左右两个较小的无序区:R[1..I-1]和R[I+1..H],且左边的无序子区中数据元素均小于等于基准元素,右边的无序子区中数据元素均大于等于基准元素,而基准X则位于最终排序的位置上,即R[1..I-1]≤X.Key≤R[I+1..H](1≤I≤H),当R[1..I-1]和R[I+1..H]均非空时,分别对它们进行上述的划分过程,直至所有无序子区中的数据元素均已排序为止。
ü 希尔排序(ShellSort)基本思想:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插人排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在同一组中进行直接插入排序为止。该方法实质上是一种分组插入方法。

快速排序算法是目前最好的,尤其是系统函数的效率相当高。
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-09-02
用快速排序法把,这个是目前排序效率最高的算法本回答被网友采纳

vb排序算法比较
快速排序算法是目前最好的,尤其是系统函数的效率相当高。

VB排序算法列举实例 ​
(1) 从第一个元素开始,将相邻的数比较,若为逆序,就交换,比较完一轮,最大的数已沉底,成为数组中的最后一个元素a(n)(2) 对a(1)和a(n-1)的n-1个数进行同(1)的操作,次大的数放入a(n-1)中,完成第二轮排序。(3) 进行n-1轮排序,所有的数排序完毕。Dim a%(), i%, j%, n...

vb排序问题
你可以少拿几组数比如4组在纸上按程序执行写一下就理解了,光是别人说的可能不是很清楚。其实这两个解答都不是标准的解答,因为效率很低,还是按照教材上面的几种排序算法来。另外,VB中数组下标默认是从0开始的,上面都没有注意这一点。

如何用VB进行排序?
4.定义一个自定义函数,比较整数序列中任意两个数字的序数大小。5.在主函数中,首先定义两个整数,并保存整数个数和排名计数。6.使用for循环输入序列中的整数,并设置序列中每个整数的序列号。7.按整数大小排序的序列中的所有数值。8.将好排序数值添加排序编号。9.最后,根据索引输出所有整数的排序...

VB数组从小到大排序
这排序没有什么大的问题。如果b()数组中已有n个元素的话,可以成功完成升序的排序。只是程序的效率不够高。当n很大时花时太多。For i = 0 To n - 2 For j = i + 1 To n - 1 '这里可以从 i + 1 开始 If b(i) > b(j) Then t = b(i)b(i) = b(j)b(j) = t End ...

这个排序算法(vb)哪里错??
第一:Dim a(100), n, x As Integer不够规范,这样定义a和n其实是变体而不是integer类型。改为:Dim a(100) As Integer, n As Integer, x As Integer 较好。第二:a(i) = InputBox("aaaaaaa")当你输入双位数如12,它就把这个12当成文本来处理,如果再输入个5,这时12会比5小,排序就达...

vb快速排序算法 不明白原理 求教 悬赏100
'当i循环第三次运行的时候(i=2),只要比较aa数组从第一个元素到倒数第三个元素就可以了,因为倒数第一个元素和倒数第二个元素已经是最大值的元素了。'依此类推,直到i循环aa元素个数次之后,j循环就从aa元素的倒数第一个元素排列到了正数第一个元素 这就是著名的冒泡排序法的递增算法(从小到...

vb代码,三个文本框中的数字排大小,分别显示在其他三个文本框中,从大...
这个关键是算法,三个数,你可以用冒泡法,需要两个循环嵌套在一起。但是数字较少,可以直接比较三个数的大小。至于具体实现得看你的控件属性了

vb 如何判断数组是否相似
1维数组快速排序算法如下:Sub QuickSort1D(asArray() As Integer, Optional bSortAscending As Boolean = True, Optional iLow1, Optional iHigh1)'变量定义 Dim iLow2 As Long, iHigh2 As Long Dim sKey As Integer Dim sSwap As Integer On Error GoTo PtrExit '如果未给出上下限参数,则...

VB编程怎么排序
Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“副到数列的顶端,故名。

相似回答