文章目录
- 1 基本介绍
- 1 代码实现
- 1.1 java
- 1.1 scala
1 基本介绍
冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。
优化:
因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志 flag 判断元素是否进行过交换。从而减少不必要的比较。(这里说的优化,可以在冒泡排序写好后,在进行)
1 代码实现
1.1 java
package sort;
/**
* @author Andy
* @email andy.gsq@qq.com
* @date 2023/2/15 19:08:43
* @desc 冒泡排序
*/
public class BubbleSortForJava {
public static void main(String[] args) {
int sum = 8;
int[] arr = new int[sum];
for(int i =0; i < sum;i++) {
arr[i] = (int)(Math.random() * sum); //生成一个[0, sum) 数
}
System.out.println("排序前:");
show(arr);
bubbleSort(arr);
System.out.println("排序后:");
show(arr);
}
public static void show (int[] arr){
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
/**
* 排序算法
* @param arr
*/
public static void bubbleSort(int[] arr) {
int temp = 0;
boolean flat = false;//优化,如果循环一遍没有交换数据位置,排序已经完成,停止循环
for (int i = 0; i < arr.length; i++) {
flat = false;
for (int j = 0; j < arr.length; j++) {
if(arr[i] > arr[j]){
flat = true;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
if(!flat){
break;
}
}
}
}
1.1 scala
package sort
/**
*
* @author Andy
* @email andy.gsq@qq.com
* @date 2023/2/15 19:29:08
* @desc TODO
*
*/
object BubbleSortForScala {
def main(args: Array[String]): Unit = {
var sum = 7
var arr = Array.ofDim[Int](sum)
for(i <- 0 until(arr.length)){
arr(i) = (math.random() * sum).toInt
}
println("排序前:");
show(arr);
bubbleSort(arr);
println("排序后:");
show(arr);
}
def show(arr: Array[Int]): Unit = {
for (i <- arr) {
print(arr(i) + " ")
}
println()
}
def bubbleSort(arr:Array[Int]): Unit = {
var temp = 0
var flat = false;
for(i <- 0 until(arr.length)){
for(j <- 0 until(arr.length)){
if(arr(i) > arr(j)){
flat = true
temp = arr(i)
arr(i) = arr(j)
arr(j) = temp
}
}
if(!flat)
return
}
}
}