冒泡排序:重复地走访要排序的数列,一次比较两个数据元素,如果顺序不对则进行交换,并且一直重复这样的走访操作,直到没有要交换的数据元素为止。
冒泡排序排序过程:
冒泡排序代码实现如下:
package com.threeTop.www;
/**
* 冒泡排序的实现
* @author wjgs
*
*/
public class BubbleSort {
private int []array;
//初始化操作
public BubbleSort(int []array)
{
this.array=array;
}
/**
* 从小到大排序
*
*/
public void sort1()
{
int length=array.length;
if(length>0)
{
for(int i=1;i<length;i++)
for(int j=0;j<length-1;j++)
{
if(array[j]>array[j+1])
{
int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
}
/**
* 从大到小的排序
*
*/
public void sort2()
{
int length=array.length;
if(length>0)
{
for(int i=length-1;i>0;i--)
for(int j=length-1;j>length-1-i;j--)
{
if(array[j]>array[j-1])
{
int temp=array[j];
array[j]=array[j-1];
array[j-1]=temp;
}
}
}
}
/**
* 打印出所有的元素
*
*/
public void print()
{
for(int i=0;i<array.length;i++)
{
System.out.print(array[i]+" ");
}
}
public static void main(String []args)
{
int []array={5,9,1,9,5,3,7,6,1};
BubbleSort bubblesort=new BubbleSort(array);
System.out.println("从大到小输出:");
bubblesort.sort2();
bubblesort.print();
System.out.println();
System.out.println("从小到大输出:");
bubblesort.sort1();
bubblesort.print();
}
}
冒泡排序的改进:
(1)增加标志位
(2)一次冒两个元素(双向冒泡)