我是靠谱客的博主 难过柚子,这篇文章主要介绍三种排序方法——温故而知新,现在分享给大家,希望可以做个参考。

           起因:

                    今天看VB.NET视频,听到老师说了这样一句话:“80%的面试都会考到冒泡排序。”这时才对它重视起来。

           分类:

                     排序方法一般可分为:筛选法排序、直接排序、冒泡排序三种。

           回忆:

                     大家还记得吗?学习VB的时候,米老师给我们形象的讲解过筛选法排序和冒泡排序。我还隐隐约约的记得老师给我们画了一个直角三角形:

     

关于具体内容可能大家也跟我一样印象模糊了。没关系,在跟我来回顾一遍吧!

           一、筛选法排序

          

          描述:第一轮将A(1)与A(2)比较,若A(1)<A(2),则交换A(1)和A(2)的值;再将A(1)与A(3)、A(4)……A(N)依次按照以上规则比较和交换,第一轮完毕,N个数中最大数存放在A(1)中。

                      第二轮将A(2)与A(3)、A(4)……A(N)依次按以上规则比较和交换;

                      第三轮将A(3)与A(4)、A(5)……A(N)依次按以上规则比较和交换;

                      第N-1轮将A(N-1)与A(N)按以上规则比较排序完成。

          例如:

<strong><span style="font-size:18px;">For i = 1 To 9
For j = i + 1 To 10
If a(i) > a(j) Then
t = a(i): a(i) = a(j): a(j) = t
End If
Next j
Next i </span></strong>
          二、直接排序


        描述:第一轮将Pointer=1,A(Pointer)与A(2)比较,若A(Pointer)<A(2),则Pointer=2;再用A(Pointer)与A(3)……A(N)比较;看是否改变了Pointer的大小,如果改变了,则将A(Pointer)与A(1)互换。

                    第二轮将Pointer=2,A(Pointer)与A(3)比较,若A(Pointer)<A(3),则Pointer=3;再用A(Pointer)与A(4)……A(N)比较;看是否改变了Pointer的大小,如果改变了,则将A(Pointer)与A(2)互换。

                    ……

        例如:

         

<strong><span style="font-size:18px;">For I = 1 To N-1
Pointer=I
For J = I+1 To N
If A(Pointer) < A(J) Then
Pointer=J
End If
Next J
If I<>Pointer Then
T=A(I)
A(I) = A(Pointer)
A(Pointer)=A(I)
End If
Next I
</span></strong>
        三、冒泡排序


         描述:第一轮将A(1)与A(2)比较,若A(1)>A(2),则交换A(1)和A(2)的值;再将A(2)与A(3)比较,方法相同;以此类推,直到A(N-1)与A(N)按照以上规则比较后,第一轮完毕,N个数中最大数存放在A(N)中。

                      第二轮将A(1)与A(2)、A(2)与A(3)……A(N-2)与A(N-1)依次按以上规则比较和交换;

                      第N-1轮将A(1)与A(2)按以上规则比较排序完成。

                      每一个的比较后都会使小数逐渐浮起来,大数下沉,就像冒泡一样。

          例如:

<strong><span style="font-size:18px;">
For m = 10 To 2 Step -1
For n = 1 To m - 1
If a(n) > a(n + 1) Then
t = a(n)
a(n) = a(n + 1)
a(n + 1) = t
End If
Next n
Next m</span></strong>

        总结:

                 无论是学习什么语言,都会用到这三种排序的方法,记是永远记不住的,我们只有多看,多想,多用,才能掌握。首先要把这三位区分开,我个人觉得比较代码的不同比较好理解。例如:(1)筛选法中是用A(I)和A(J)比较;(2)冒泡中是用A(J)和A(J+1)比较;(3)直接排序中是用指针A(Pointer)与A(J)比较,而且与前两个不同的是交换的是Pointer与I的值,而不是数组的值。

      三大排序方法就回顾到这里,有说错的地方还请各方神圣指出。

最后

以上就是难过柚子最近收集整理的关于三种排序方法——温故而知新的全部内容,更多相关三种排序方法——温故而知新内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部