冒泡排序
输入:一维数组存放n个无序数
输出:从小到大排序输出
算法:从下标j=0开始向右遍历数组,比较a[j]与a[j+1],若a[j]>a[j+1],则交换,此为一趟排序。
重复上述操作,比较n-1趟,排序完成。
分析:一趟排序可以得到最大的元素a[n-1],其实就是打擂台思想。
对于每一对a[j]与a[j+1]的比较,交换完大的元素就是a[j+1];
然后拿此时最大的元素与下一个元素比较并交换,所以a[j+1]中存放的永远是目前比较过的数中最大的数;
第一趟排序完,最大的元素就会放到a[n-1],确定了最大元素的位置,之后这个元素便不需要参加排序了,下一趟排序的个数便会少 一个。
第二趟排序完,第二大的元素就会放到a[n-2],位置确定,下一趟排序个数减一。
。。。。。。
第n-1趟排序,确定了n-1个数的位置,还剩一个就是呆在该待的位置上了,排序完成。
package test;
public class test1 {
public static void main(String[] args){
int []a={5,4,7,8,9,10,2,1,3,6};
int len=a.length;
for(int i=0;i<len-1;i++)//第i+1趟排序
{
for(int j=0;j<len-1-i;j++)//第j+1对比较
{
if(a[j]>a[j+1])
{
int t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(int i=0;i<len;i++)
System.out.print(a[i]+" ");
}
}
- 编写成类便于以后调用,放于包test中。
package test;
public class BubbleSort {
/**
* The {@code BubbleSort} class for solving the sorting of a set of integers or characters.
* @author GU
*/
public static void BubbleSort( int []a){
int len=a.length;
for(int i=0;i<len-1;i++)//第i+1趟排序
{
for(int j=0;j<len-1-i;j++)//第j+1对比较
{
if(a[j]>a[j+1])
{
int t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(int i=0;i<len;i++)
System.out.print(a[i]+" ");
System.out.println();
}
public static void BubbleSort(char []a){
int len=a.length;
for(int i=0;i<len-1;i++)//第i+1趟排序
{
for(int j=0;j<len-1-i;j++)//第j+1对比较
{
if(a[j]>a[j+1])
{
char t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(int i=0;i<len;i++)
System.out.print(a[i]+" ");
System.out.println();
}
/**
* Unit tests some of the methods in {@code BubbleSort}.
*
* @param args the command-line arguments
*/
public static void main(String[] args){
int []a={5,4,7,8,9,10,2,1,3,6};
char []b={'a','b','d','c'};
BubbleSort(a);
BubbleSort(b);
}
}
欢迎批评指正!