数据结构排序系列详解之三 冒泡排序
2013-07-28 20:33
204 查看
前面两篇博客讲述的排序算法都是基于插入类的排序,这篇文章开始介绍交换类的排序算法,即:冒泡排序、快速排序(冒泡排序的改进)。
交换类的算法:通过交换逆序元素进行排序的方法。
冒泡排序:反复扫描待排序记录序列,在扫描的过程中,顺次比较相邻的两个元素的大小,若逆序就交换位置。
算法实现代码如下:
算法分析:最好的情况是,需要排序的初始状态是正序排列的,则一趟扫描即可完成,此时时间复杂度是O(n);最坏情况是,需要排序的初始状态是反序的,则需要n-1趟扫描,此时时间复杂度是
O(n^2),空间复杂度是
O(1);该算法是一种
稳定的排序方法。
交换类的算法:通过交换逆序元素进行排序的方法。
冒泡排序:反复扫描待排序记录序列,在扫描的过程中,顺次比较相邻的两个元素的大小,若逆序就交换位置。
算法实现代码如下:
package exp_sort; public class BubbleSort { public static void bubble(int array[]) { boolean change = true; for (int i = 0; i < array.length && change; i++) { change = false; for (int j = 0; j < array.length - i - 1; j++) { if (array[j] > array[j + 1]) { int temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; change = true; } } } for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); } System.out.println("\n"); } public static void main(String[] args) { // TODO Auto-generated method stub int array[] = { 38, 62, 35, 77, 55, 14, 35, 98 }; bubble(array); } }
算法分析:最好的情况是,需要排序的初始状态是正序排列的,则一趟扫描即可完成,此时时间复杂度是O(n);最坏情况是,需要排序的初始状态是反序的,则需要n-1趟扫描,此时时间复杂度是
O(n^2),空间复杂度是
O(1);该算法是一种
稳定的排序方法。
相关文章推荐
- 数据结构排序系列详解之三 冒泡排序
- 数据结构排序系列详解之三 冒泡排序
- 数据结构排序系列详解之二 希尔排序
- 数据结构排序系列详解之四 快速排序
- 数据结构排序系列详解之一 插入排序
- 数据结构排序系列详解之七 归并排序
- 数据结构排序系列详解之九 桶排序
- 数据结构排序系列详解之六 树形选择排序
- 数据结构排序系列详解之四 快速排序
- 数据结构排序系列详解之五 简单选择排序
- 数据结构排序系列详解之八 堆排序
- 数据结构排序系列详解之二 希尔排序
- 数据结构排序系列详解之一 插入排序
- Exchange Server 2016管理系列课件02.创建邮箱方法详解
- Server系列8:关于HP服务器如何使用IIP部署系统详解
- 顺风详解Nginx系列—Ngx中的变量
- Symbian S60系列---PKG文件范例详解(二)
- 【Android学习系列】AndroidManifest.xml文件详解(data)
- 消息队列基础 RabbitMQ与AMQP协议详解——超大规模高可用OpenStack核心技术深入解析系列(二)
- Jenkins进阶系列之——12详解Jenkins节点配置