冒泡排序

来源:互联网 发布:JAVA中 异常类型 编辑:程序博客网 时间:2024/04/30 05:39

排序的过程中,前一个和后一个比较,前面大就放到后面去,然后索引更新到原后一个(也就是+1啦),原后一个与原后一个的后一个比较。。。
然后一趟排序下来,最大的就被放到数组最后面了,最大的定下来以后排序就不必带上她了(排序范围-1),反正他最大放最后

package sort;/* * 冒泡排序 * 两两比较,小的放前,大的放后,一趟排序后,最大的放到最后 */public class bubbleSort{    private int [] array = { 9 , 4 , 2 , 5 , 6 , 7 , 8 };    private int maxSize ; //数组长度    private boolean isSwap;//用来标记一趟排序中,是否交换过数据,没有交换过说明数组已经是有序的    public bubbleSort ()    {        maxSize = array.length ;    }    public void sort ()    {        //用来指定循环的范围   maxSize-1 代表最大数组下标        for ( int i = maxSize - 1 ; i > 0 ; i-- )        {            isSwap = false ;            //排序把小的放到前面,大的放后面,一趟下来,最大的放到最后了            for ( int j = 0 ; j < i ; j ++ )            {                if ( array [j] > array [j+1] )                {                    swap ( j , j+1 ) ;                    isSwap = true ;                }            }            //如果isSwap == false,代表没有交换,说明顺序提前排好了,直接退出            if ( !isSwap )            {                break ;            }        }    }    //交换元素,形参放的是数组下标    public void swap ( int i , int j )    {        int temp = array [i];        array [i] = array [j] ;        array [j] = temp ;    }    //遍历    public void display ()    {        for ( int i = 0 ; i < array.length ; ++i )        {            System.out.print ( array[i] + " ");        }        System.out.println ();    }}