0
点赞
收藏
分享

微信扫一扫

lowB三人组---冒泡排序原理和实现


冒泡排序

  • ​​原理分析​​
  • ​​代码如下:​​
  • ​​算法复杂度​​

原理分析

lowB三人组---冒泡排序原理和实现_数据结构

/**
* 冒泡排序
* 排序:默认是正序,从小到大排序
* 原理: 从下往上排序, 叫做从前往后排序, 如果前面的数比后面的数大,则交换2个数的位置
* 元素个数为; N
* 外层循环: 比较的总趟数 N-1, 每趟数为: i(从0开始)
* 内层循环: 无序区范围大小 N-i-1, 也可以理解为:一趟中比较的次数,注意: 指针指向的数从0开始, 最后一个数据不用比较,
* 代码关键点: 趟, 无序区范围
* 优化: 如果冒泡排序中的一趟排序没有发生交换,则说明列表已经有序,可以直接结束算法
* @param arr
*/

代码如下:

package com.company;

import java.util.Arrays;

public class Main {

public static void main(String[] args) {
System.out.println(1);
int[] arr = {7, 2, 5, 8, 1, 3, 6, 9, 4};
dubbleSort(arr);
}

/**
* 冒泡排序
* 原理: 从下往上排序, 叫做从前往后排序, 如果前面的数比后面的数大,则交换2个数的位置
* 元素个数为; N
* 外层循环: 比较的总趟数 N-1, 每趟数为: i(从0开始)
* 内层循环: 无序区范围大小 N-i-1, 也可以理解为:一趟中比较的次数,注意: 指针指向的数从0开始, 最后一个数据不用比较,
* 代码关键点: 趟, 无序区范围
* 优化: 如果冒泡排序中的一趟排序没有发生交换,则说明列表已经有序,可以直接结束算法
* @param arr
*/
public static void dubbleSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
boolean flag = false;
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
flag = true;
}
}
System.out.println(Arrays.toString(arr));
if (!flag){
return;
}
}

}
}

运行结果:

lowB三人组---冒泡排序原理和实现_数据结构_02

算法复杂度

因为是2层循环,也没有折半,所以是: O(n² )

完成


举报

相关推荐

0 条评论