交换排序----冒泡排序----java实现

来源:互联网 发布:模拟退火算法 c语言 编辑:程序博客网 时间:2024/06/05 15:16

冒泡排序:

1趟:依次比较0112.......n-2n-1索引位置的元素,如果发现一个数比他后面的数大,则交换着两个数的位置,经过第一趟排序,最大的数排在了数组的最后面。

2趟:依次比较0112.......n-3n-2索引位置的元素,如果发现一个数比他后面的数大,则交换着两个数的位置,经过第2趟排序,0-n-2区间中最大的数排在了数组的倒数第二个位置。

.......

n-1趟排序:比较01,如果发现一个数比他后面的数大,则交换着两个数的位置。

实际上冒泡排序的每趟交换结束,不仅可以得到当前的最大值,还能部分有序前面其他的元素,如果某趟一次交换也没有发生,说明数组已经全部有序,可以提前结束。

public void bubbleSort(int[] array)  {  //需要进行n-1趟交换for (int i = 0; i < array.length-1; i++){boolean flag = false;//每趟交换for (int j = 0; j < array.length-1-i; j++){if(array[j] > array[j+1]){swap(array,j,j+1);flag = true;//如果进行交换了,则flag=true;}}//如果flag==false说明这趟没有进行一次交换,此时数组寂静全部有序,可以退出程序if(flag == false){break;}}    }private void swap(int[] array, int i , int j){int temp = array[j];array[j] = array[i];array[i]=temp;}


0 0
原创粉丝点击