排序的过程中,前一个和后一个比较,前面大就放到后面去,然后索引更新到原后一个(也就是+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 ();
}
}