冒泡排序算法的一般性策略:搜索整个值列,比较相邻元素,如果两者的相对次序不对,则交换它们,其结果是最大值“想水泡一样”移动到值列的最后一个位置上,这也是它在最终完成排序的值列中合适的位置。然后再次搜索值列,将第二大的值移动至倒数第二个位置上,重复该过程,直至将所有元素移动到正确的位置上。
下面是两个Java冒泡算法程序:
public
class Bubble {
// 冒泡排序函数1
public static void bubbleSort1(Comparable []data){
int position,scan;
Comparable temp;
for(position = data.length-1;position>=0;position--){
for(scan=0;scan<=position-1;scan++){
if(data[scan].compareTo(data[scan+1])<0){
temp = data[scan];
data[scan] = data[scan+1];
data[scan+1]=temp;
}
}
}
}
// 冒泡排序函数2
public static int[] bubbleSort2( int[] m){
int intLenth = m.length;
/*执行intLenth次*/
for ( int i=0;i<intLenth;i++){
/*每执行一次,将最小的数排在后面*/
for ( int j=0; j<intLenth-i-1;j++)
{
int a = m[j];
int b = m[j + 1];
if (a < b)
{
m[j] = b;
m[j + 1] = a;
}
}
}
return m;
}
public static void main(String []args){
// 冒泡排序1
Comparable []c={4,9,23,1,45,27,5,2};
bubbleSort1(c);
for( int i=0;i<c.length;i++)
System.out.println( "冒泡排序1:"+c[i]);
System.out.println( "*******************");
// 冒泡排序2
int []b = {4,9,23,1,45,27,5,2};
int []e = bubbleSort2(b);
for( int j=0;j<e.length;j++)
System.out.println( "冒泡排序2:"+e[j]);
}
}
// 冒泡排序函数1
public static void bubbleSort1(Comparable []data){
int position,scan;
Comparable temp;
for(position = data.length-1;position>=0;position--){
for(scan=0;scan<=position-1;scan++){
if(data[scan].compareTo(data[scan+1])<0){
temp = data[scan];
data[scan] = data[scan+1];
data[scan+1]=temp;
}
}
}
}
// 冒泡排序函数2
public static int[] bubbleSort2( int[] m){
int intLenth = m.length;
/*执行intLenth次*/
for ( int i=0;i<intLenth;i++){
/*每执行一次,将最小的数排在后面*/
for ( int j=0; j<intLenth-i-1;j++)
{
int a = m[j];
int b = m[j + 1];
if (a < b)
{
m[j] = b;
m[j + 1] = a;
}
}
}
return m;
}
public static void main(String []args){
// 冒泡排序1
Comparable []c={4,9,23,1,45,27,5,2};
bubbleSort1(c);
for( int i=0;i<c.length;i++)
System.out.println( "冒泡排序1:"+c[i]);
System.out.println( "*******************");
// 冒泡排序2
int []b = {4,9,23,1,45,27,5,2};
int []e = bubbleSort2(b);
for( int j=0;j<e.length;j++)
System.out.println( "冒泡排序2:"+e[j]);
}
}
转载于:https://blog.51cto.com/tscjsj/84561