简单优化冒泡排序
Posted Java算法编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单优化冒泡排序相关的知识,希望对你有一定的参考价值。
一. 排序算法的介绍
排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。
二. 排序的分类
1) 内部排序:
指将需要处理的所有数据都加载到内部存储器中进行排序。
2) 外部排序法:
数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。
3) 常见的排序算法分类(见下图)
三. 冒泡排序介绍
冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。
优化 : 因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置 一个标志flag判断元素是否进行过交换。从而减少不必要的比较。 (这里说的优化,可以在冒泡排序写好后,在进行)
四. 代码实现
1)初始化变量
//创建数组
int arr[] = {3, 9, -1, 10, 20};
//临时变量,交换时使用
int temp = 0;
//标识符,表示数字是否交换过(如果一趟中没有交换则代表已经排好顺序了)
//优化的标志
boolean flag = false;
2) 排序
//比较几轮
for (int i = 0; i < arr.length - 1; i++) {
//每一轮比较的次数
for (int j = 0; j < arr.length - 1 - i; j++) {
//判断
if (arr[j] > arr[j + 1]){
//执行到这里,则代表有数据需要交换
flag = true;
//交换数据
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
//输出
System.out.println("第"+ (i + 1) +"趟排序");
System.out.println(Arrays.toString(arr));
//判断这趟排序中是否一次都没交换过数据
if (!flag){
//退出大循环
break;
}else {
//重置flag,进行下一次判断
flag = false;
}
}
总结: 冒泡排序是很简单的排序方法,这个简单优化可以减少一些无效的比较,提高一下代码运行时间.
以上是关于简单优化冒泡排序的主要内容,如果未能解决你的问题,请参考以下文章