//冒泡排序算法
/*确定最后一个数字,不管是从小到大,还是从大到小,都是确定数组的最后一个数值。
- 从开始两个两个的比较
- 总结下来其实外层for循环只需要遍历length-1次
- 内层是从开始,到最后,但是每遍历一次,最后就会确定一个数,因此内层for循环条件是随外层循环减少;
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("输入个数:");
int n=scan.nextInt();
int[] num=new int[n];
for(int i=0;i<num.length;i++)
{
num[i]=(int)(Math.random()*100+1);
}
System.out.println("原序输出");
for(int i:num)
{
System.out.print(i+"\t");
}
System.out.println();
System.out.println("冒泡排序输出");
long start=System.currentTimeMillis();//测试运行所需时间
for(int i=0;i<num.length-1;i++)//此处外循环只控制次数
{
for(int j=0;j<num.length-1-i;j++)
{
if(num[j]>num[j+1])
{
int temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
}
}
}
//先确定头的方法
// for(int i=0;i<num.length-1;i++)
// {
// for(int j=i+1;j<num.length;j++)
// {
// if(num[i]>num[j])
// {
// int temp=num[i];
// num[i]=num[j];
// num[j]=temp;
//
// }
// }
// }
long end=System.currentTimeMillis();
for(int i:num)
{
System.out.print(i+"\t");
}
System.out.println();
System.out.println("所消耗时间"+(end-start));
}
运行结果
13
原序输出
33 26 61 11 59 53 6 35 61 51 63 57 99
冒泡排序输出
6 11 26 33 35 51 53 57 59 61 61 63 99
所消耗时间0