您现在的位置是:首页 > 后台技术 > 数据结构与算法数据结构与算法
冒泡排序(图文)
第十三双眼睛2022-06-19【数据结构与算法】人已围观
简介冒泡排序
冒泡排序
冒泡排序的思想是:通过对待排序序列从前向后,依次比较相邻元素的值,若发现逆序则交换,使值较大的元素主键从前移动到后,就像水底下的气泡逐渐向上冒一样。
因为排序的过程中,各元素不断接近自己的位置,如果已让比较下来没有进行过交换,则说明已经有序了。因此要再排序过程中设置一个标志,判断元素是否进行过交换,
从而减少不必要的比较。
程序如下:
测试结果如下:
7 6 5 4 3 2 1
还可以设置一个变量,记录本轮比较是否进行过交换,如果没有,就说明已经排好序了,不需要再次比较。
程序如下:
测试结果如下:
一共比较了0次1 2 3 4 5 6
可以看出,数组本来就是有序的,一共进行了0次比较
冒泡排序的思想是:通过对待排序序列从前向后,依次比较相邻元素的值,若发现逆序则交换,使值较大的元素主键从前移动到后,就像水底下的气泡逐渐向上冒一样。
因为排序的过程中,各元素不断接近自己的位置,如果已让比较下来没有进行过交换,则说明已经有序了。因此要再排序过程中设置一个标志,判断元素是否进行过交换,
从而减少不必要的比较。
程序如下:
package com.xingchen.day005; public class Sort { public static void main(String[] args) { int arr[] = {4,1,5,2,6,3,7}; int temp = 0; 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]){ temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } for(int i=0;i<arr.length;i++){ System.out.printf("%d ",arr[i]); } } } |
7 6 5 4 3 2 1
还可以设置一个变量,记录本轮比较是否进行过交换,如果没有,就说明已经排好序了,不需要再次比较。
程序如下:
package com.xingchen.day005; public class Sort { public static void main(String[] args) { int arr[] = {1,2,3,4,5,6}; int temp = 0; int count = 0; boolean flag = false; 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]){ count ++; flag = true; temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } if(!flag){ break; } } System.out.printf("一共比较了%d次",count); for(int i=0;i<arr.length;i++){ System.out.printf("%d ",arr[i]); } } } |
一共比较了0次1 2 3 4 5 6
可以看出,数组本来就是有序的,一共进行了0次比较
Tags:
很赞哦! ()