冒泡排序(优化)

    xiaoxiao2022-06-22  20

    冒泡排序的效率不高,适合小量数据的排序,当数据较多的时候,建议使用其他排序算法,在另一篇博客中我已经介绍了冒泡排序冒泡排序,这篇博客将对冒泡排序进一步优化。 例如,有这样一个数组,int arr[]={13,10,7,9,3,23,43,52,61,71};可以看到这个数组有一个明显的特点:前五个数字无序,后五个数字有序,且都比前五个数字大,这样我们就可以最多进行5次排序就可以把整个数组的顺序确定下来。 我们同样可以设置标志位,找出需要交换的数字和不需要交换的数字的分界位置。这里就是5,下次只要从数组头部遍历到这个位置就可以了。后面的数字就不用遍历了。 Java代码实现如下:

    package bubble; public class bubble3 { public static int [] bubble(int []arr) { int j,k,m; m=1; int temp=0; int flag=arr.length; while(flag>0) { k=flag; flag=0; for(j=1;j<k;j++) { if(arr[j-1]>arr[j]) { temp=arr[j-1]; arr[j-1]=arr[j]; arr[j]=temp; flag=j; } } System.out.println("第"+(m++)+"次遍历:"); for(int i=0;i<arr.length;i++) { System.out.print(arr[i]+" "); } System.out.println(); } return arr; } public static void main(String[] args) { //数组的前五个无序,后五个有序,且后五个比前五个都大。 int arr[]={13,10,7,9,3,23,43,52,61,71}; int arr1[]=bubble(arr); for(int i=0;i<arr1.length;i++) { System.out.print(arr1[i]+" "); } } }

    结果为: 第1次遍历: 10 7 9 3 13 23 43 52 61 71 第2次遍历: 7 9 3 10 13 23 43 52 61 71 第3次遍历: 7 3 9 10 13 23 43 52 61 71 第4次遍历: 3 7 9 10 13 23 43 52 61 71 第5次遍历: 3 7 9 10 13 23 43 52 61 71 3 7 9 10 13 23 43 52 61 71

    转载请注明原文地址: https://ju.6miu.com/read-1123015.html

    最新回复(0)