冒泡排序算法的实现及原理---Java实现
程序员文章站
2022-06-28 07:57:58
冒泡排序冒泡排序的原则假设现在有一个数组 [a,b,c,d,e]拿到最左边的元素与自己相邻的右边的元素进行比较,如果a>b,则a与b进行交换位置,紧接着,a与c进行比较,如果a>c,则a与c再次交换位置,以此类推,每次循环后将最大的元素冒出。现在有一个数组 [3,1,6,2,5],用代码实现冒泡排序,思路如下:第一次要比较的元素:3,1,6,2,5外层第一次循环:3与1比较,3和1交换位置,交换后的元素排列为:1,3,6,2,53与6比较,3和6不交换位置,但是会进行比较,元素...
冒泡排序
冒泡排序的原则
假设现在有一个数组 [a,b,c,d,e]
拿到最左边的元素与自己相邻的右边的元素进行比较,如果a>b,则a与b进行交换位置,紧接着,a与c进行比较,如果a>c,则a与c再次交换位置,以此类推,每次循环后将最大的元素冒出。
现在有一个数组 [3,1,6,2,5],用代码实现冒泡排序,思路如下:
第一次要比较的元素:3,1,6,2,5
- 外层第一次循环:
- 3与1比较,3和1交换位置,交换后的元素排列为:1,3,6,2,5
- 3与6比较,3和6不交换位置,但是会进行比较,元素排列为:1,3,6,2,5
- 6与2比较, 2和6交换位置,交换后的元素排列为:1,3,2,6,5
- 6和5比较,5和6交换位置,交换后的元素排列为:1,3,2,5,6
- 6最终冒出
第二次要比较的元素:1,3,2,5
- 外层第二次循环:
- 1与3比较,不交换位置,但是会比较,元素排列为:1,3,2,5
- 3与2比较,3和2交换位置,交换后的元素排列为:1,2,3,5
- 3与5比较,不交换位置,但是会进行比较,元素排列为:1,2,3,5
- 5最终冒出
第三次要比较的元素:1,2,3
- 外层第三次循环:
- 1和2比较,1和2不交换位置,但是会进行比较,元素排列为:1,2,3
- 2和3比较, 2和3不交换位置,但是会进行比较,元素排列为:1,2,3
- 3最终冒出
第四次要比较的元素:1,2
- 外层第四次循环:
- 1和2比较,1和2不交换位置,但是会进行比较,元素排列为:1,2
- 2最终冒出
- 冒泡排序规律:
-
外层循环次数 = 数组元素的长度-1
-
内层循环次数 = 比较元素个数-1
代码实现如下:
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {3,1,6,2,5};
for(int i = arr.length-1; i>0;i--) {
for(int j=0;j<i;j++) {
if(arr[j]>arr[j+1]) { //比较完进行交换位置,arr[j]与arr[j+1]进行交换位置
int temp;
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
//排序后进行遍历
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]);
}
}
}
交换位置图解如下
本文地址:https://blog.csdn.net/ZS74520/article/details/111969012
上一篇: 新同事都看厌了