您的位置:首页 > 文旅 > 美景 > 冒泡排序及优化

冒泡排序及优化

2024/10/5 20:18:28 来源:https://blog.csdn.net/dfghhhjj/article/details/140456374  浏览:    关键词:冒泡排序及优化

冒泡排序

冒泡排序思想:通过对待排序序列从前往后依次比较元素值,如果发现逆序则交换,是元素大的移动到后面或前面,就像水中气泡一样。

代码实例

下面展示一些 冒泡排序代码片

package com.haina.java11;import java.util.Arrays;public class SortTest {public static void main(String[] args) {int arr[] = {1, 22, 7, 3, 4, -5, -8};System.out.println("排序前的序列:");System.out.println(Arrays.toString(arr));System.out.println("排序后的序列:");SortTest.bubbleSort(arr);}public static void bubbleSort(int[] a) {//设置一个变量int temp = 0;//控制循环的行数for (int i = 0; i < a.length - 1; i++) {//控制比较的次数for (int j = 0; j < a.length - 1 - i; j++) {if (a[j] > a[j + 1]) {temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;}}}System.out.println(Arrays.toString(a));}
}

程序结果:
在这里插入图片描述

优化:

因为在排序过程中,元素不断接近自己的位置,如果一趟下来没有进行元素交换,则说明是有序序列,因此要在排序过程中加一个标志flag,来判断元素是否进行过交换,从而减少没必要的比较。

下面展示一些 冒泡排序优化后代码片

package com.haina.java11;import java.util.Arrays;public class SortTest {public static void main(String[] args) {int arr[] = {1, 22, 7, 3, 4, -5, -8};System.out.println("排序前的序列:");System.out.println(Arrays.toString(arr));System.out.println("排序后的序列:");SortTest.bubbleSort(arr);}public static void bubbleSort(int[] a) {//设置一个变量int temp = 0;boolean flag=false;//控制循环的行数for (int i = 0; i < a.length - 1; i++) {//每次遍历前先将flag初始化为true;flag=true;//控制比较的次数for (int j = 0; j < a.length - 1 - i; j++) {if (a[j] > a[j + 1]) {temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;// 当在本次遍历之中存在元素交换时,将flag置为false。flag = false;}}//当本次遍历结束后,如果flag还是初始的重置状态,则说明本次遍历没有元素交换。// 即整个数组的顺序已排列好。此时直接跳出循环即可。if (flag){break;}}System.out.println(Arrays.toString(a));}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com