排序法总结(一)——三种基本排序方法

来源:互联网 发布:防止sql注入攻击 编辑:程序博客网 时间:2024/04/28 21:19

排序法总结(一)——三种基本算法
一、 选择排序法
网上的解释:选择排序法的第一层循环从起始元素开始选到倒数第二个元素,主要是在每次进入的第二层循环之前,将外层循环的下标赋值给临时变量,接下来的第二层循环中,如果发现有比这个最小位置处的元素更小的元素,则将那个更小的元素的下标赋给临时变量,最后,在二层循环退出后,如果临时变量改变,则说明,有比当前外层循环位置更小的元素,需要将这两个元素交换.
我理解的是:先假设第一个最大(小)为a(0),然后把它挑出来,然后和后面的数进行比较,如果比到出现一个比a(0)大(小)的数a(2),就把a(0)和a(2)交换,用a(2)接着往下比直到找出一个最大(小)的数确定下来。然后重复以上过程在找出第二大(小)的数,以此类推按大到小(从小到大)排好整个数列。
(假设的思想—假设一个数最大)

这里写图片描述

代码: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
二、 冒泡排序法
冒泡排序算法的运作如下:(从后往前)
1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3. 针对所有的元素重复以上的步骤,除了最后一个。
4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
(相邻的元素交换)
这里写图片描述

代码如下:
For i = 1 to 9
For j =1 to 10-i
If a(j) < a(j+1) Then
t=a(j)
a(j)=a(j+1)
a(j+1)=t
End if
Next j
Next i
三、 插入排序法
所谓插入排序法,就是检查第i个数字,如果在它的左边的数字比它大,进行交换,这个动作一直继续下去,直到这个数字的左边数字比它还要小,就可以停止了。插入排序法主要的回圈有两个变数:i和j,每一次执行这个回圈,就会将第i个数字放到左边恰当的位置去。
插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。
(分为直接插入法和折半插入法)

代码如下:
For i = 2 To 10
If a(i) > a(i - 1) Then
t = a(i)
For j = i - 1 To 1 Step -1
If t < a(j) Then Exit For
a(j + 1) = a(j)
Next j
a(j + 1) = t
End If
Next i
总结:这三种排序方法只是我们了解排序的基础,在学会了这三种排序的基础上我们才能,对其加以优化,加快运算效率。

1 0
原创粉丝点击