请看一下这个“排序”过程,再帮我详细分析一下,谢谢!
Dim numOfElements,i,j,span As Short '需要排序的总数量
span=numOfElements\2
Do While span>0
For i=span To numOfElemets-1
j=i-span+1
For j=(i-span+1) To 1 Step -span
If sort(j)<=sort(j+span) Then Exit For
temp=sort(j)
sort(j)=sort(j+span)
sort(j+span)=temp
Next j
Next i
span=span\2
Loop
相关推荐
冒泡排序-排序过程 冒泡排序-排序过程
冒泡排序-排序过程 设想被排序的数组R[1..N]垂直竖立,将每个数据元素看作有重量的气泡,根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R,凡扫描到违反本原则的轻气泡,就使其向上"漂浮",如此反复进行,直至最后任何两个气泡都是轻者在上,重者在下为止。 算法示例 49 13 13 13 13 13 13 13 38 49 27 27 27 27 27 27 65 38 49 38 38 38 38 38 97 65 38 49 49 49 49 49 76 97 65 49 49 49 49 49 13 76 97 65 65 65 65 65 27 27 76 97 76 76 76 76 49 49 49 76 97 97 97 97 Procedure BubbleSort(Var R : FileType) //从下往上扫描的起泡排序// Begin For I := 1 To N-1 Do //做N-1趟排序// begin NoSwap := True; //置未排序的标志// For J := N - 1 DownTo 1 Do //从底部往上扫描// begin If R[J+1]< R[J] Then //交换元素// begin Temp := R[J+1]; R[J+1 := R[J]; R[J] := Temp; NoSwap := False end; end; If NoSwap Then Return//本趟排序中未发生交换,则终止算法// end End; //BubbleSort// 该算法的时间复杂性为O(n2),算法为稳定的排序方 冒泡排序-冒泡排序法的改进 比如用冒泡排序将4、5、7、1、2、3这6个数排序。在该列中,第二趟排序结束后,数组已排好序,但计算机此时并不知道已经反排好序,计算机还需要进行一趟比较,如果这一趟比较,未发生任何数据交换,则知道已排序好,可以不再进行比较了。因而第三趟比较还需要进行,但第四、五趟比较则是不必要的。为此,我们可以考虑程序的优化。 为了标志在比较中是否进行了,设一个布尔量flag。在进行每趟比较前将flag置成true。如果在比较中发生了数据交换,则将flag置为false,在一趟比较结束后,再判断flag,如果它仍为true(表明在该趟比较中未发生一次数据交换)则结束排序,否则进行下一趟比较。
冒泡排序过程演示程序
创建一个基于对话框的应用程序,在客户区显示待排序的元素,点击“开始排序”按钮,开始演示每一轮各元素比较交换的过程。
堆排序过程的动画演示
ppt制作的堆排序过程,每一步都演示的很详细,可帮助大家理解堆的定义,理清思路,有需要的就下载吧。
各种排序算法的详细分析
此为一个利用Java语言编写的排序分析程序,程序中统计了各种排序算法(冒泡排序、选择排序、插入排序、希尔排序、快速排序、堆排序、归并排序、基数排序)的分析,ppt中包含各种排序算法的分析,附上动画演示(来自网络,在ppt中)和算法的Java语言实现。
冒泡法排序之过程 冒泡法排序之过程
7-5 冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程


