假设有5个数字3,1,6,2,5在一个int数组中,要求按从小到大排序输出
如何采用冒泡排序算法呢?
冒泡排序的算法是这样的,首先从数组的最左边开始,取出第0号位置(左边)的数据和第1号位置(右边)的数据,如果左边的数据大于右边的数据,则进行交换,否而不进行交换。接下来右移一个位置,取出第1个位置的数据和第2个位置的数据,进行比较,如果左边的数据大于右边的数据,则进行交换,否而不进行交换。沿着这个算法一直排序下去,最大的数就会冒出水面,这就是冒泡排序。
从上面我们看到了比较了N-1次,那么第二遍就为N-2次比较了,如此类推,比较次数的公式如下:
(N-1) + (N-2)+...+1=((N-1)*N)/2
所以以上总共比较次数为((5-1)*5)/2=10
以上就是冒泡排序算法
代码如下:
public class MainShow {
public static int [] array={5,2,7,3,9,4,1};
public static String[] array2={"5","2","7","3","9","4","1"};
public static void main(String[] args) {
sort();
show();
sortString();
showString();
// String a="90";
// String b="70";
// //String-》数字
// int ia=Integer.parseInt(a);
// float fa=Float.parseFloat(a);
// double da=Double.parseDouble(a);
// short sa=Short.parseShort(a);
// byte ba=Byte.parseByte(a);
// long la=Long.parseLong(a);
//
// //数字-》String
// String snumber=String.valueOf(9);
//
}
public static void sort()
{
//次数
for (int i =array.length-1;i>0; i--) {
//2个数字比较次数
for (int j = 0; j < i; j++) {
//自小到大排序
if(array[j]>array[j+1])
{
int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
}
//展示
public static void show()
{
System.out.println("*********************");
for (int i = 0; i < array.length; i++) {
System.out.println(i+"="+array[i]);
}
System.out.println("********************");
}
public static void sortString()
{
//次数
for (int i = array2.length-1; i >0 ; i--) {
//2个数字比较次数
for (int j = 0; j < i; j++) {
int a =Integer.parseInt(array2[j]);
int b =Integer.parseInt(array2[j+1]);
//自小到大排序
if(a>b )
{
String temp=array2[j];
array2[j]=array2[j+1];
array2[j+1]=temp;
}
}
}
}
public static void showString()
{
System.out.println("*********************");
for (int i = 0; i < array2.length; i++) {
System.out.println(i+"="+array2[i]);
}
System.out.println("********************");
}
}