排序法总结(一)——三种基本排序方法
来源:互联网 发布:防止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
总结:这三种排序方法只是我们了解排序的基础,在学会了这三种排序的基础上我们才能,对其加以优化,加快运算效率。
- 排序法总结(一)——三种基本排序方法
- java基本排序算法总结(一)——冒泡排序法
- 基本排序方法之三——直接插入排序
- 八种排序方法(三)——插入排序
- 排序初探(三种基本排序)
- 基本排序(一):冒泡排序算法的三种基本实现
- 八种排序方法(一)——选择排序
- 三种基本排序
- 基本排序方法归纳整理(一):冒泡排序
- 三种排序方法的流程总结
- 总结的三种排序方法
- 排序——冒泡排序(三种方法)
- 各种排序总结(一)之--—冒泡排序、选择排序、快速排序
- 各种排序总结(一)之--—冒泡排序、选择排序、快速排序
- 基本排序(一)
- 三种排序方法——温故而知新
- Java排序算法总结之(一)——插入排序(直接插入排序、折半插入排序、希尔排序)
- 数组的三种基本排序法
- 关于混合光谱分解新方法(文献总结)
- 幸运数
- mongodb+springmvc+spring+maven配置
- 服务器性能监控javamelody配置使用
- HDU 5698 瞬间移动 (组合数 + 阶乘逆元)
- 排序法总结(一)——三种基本排序方法
- LeetCode-111.Minimum Depth of Binary Tree
- pwnable.kr write up 之 sample login
- android_socket_switch
- Java Android Bug:duplicate entry:classes.dex
- HBase集群搭建及hbaseshell使用
- 文章标题
- poj 3070 Fibonacci(矩阵加速DP)
- hadoop 学习笔记:mapreduce框架详解