public class MaoPaoPaiXu {
public static void main(String []args) {
int []fl={59,60,4,5,1};
for(int i=0;i<fl.length-1;i++) {
for(int j=i+1;j<fl.length;j++) {
if(fl[j]>fl[i]) {
int temp=fl[j];
fl[i]=fl[j];
fl[i]=temp;
}
}
}
for(int i=0;i<fl.length;i++) {
System.out.print(fl[i]+" ");
}
}
}
这个打出来是{60.60.5.5.1}但是我想要的是{60.59.5.4.1}请问哪里出错呢
第二步,应该是fj=fi######第二个for循环括号里面的条件写错了######
谢谢各位
######将你的代码稍加修改如下:
public class MaoPaoPaiXu { public static void main(String []args) { int []fl={59,60,4,5,1};
for(int i=0;i<fl.length-1;i++) {
for(int j=i;j<fl.length-2;j++) {
if(fl[j+1]>fl[j]) {
int temp=fl[j+1];
fl[j+1]=fl[j];
fl[j]=temp;
}
}
}
for(int i=0;i<fl.length;i++) {
System.out.print(fl[i]+" ");
}
}
}
输出:60 59 5 4 1
下面介绍一个冒泡排序的代码。它考虑的比较全面,请仔细学习。
import java.util.Arrays;
import java.util.Random;
public class BubbleSort{
static void bubble_sort(int a[]){ //起泡排序方法,将数组排序,排成递减序列
int i,j,t, n=a.length;
boolean swap=true;
int count=1;
/* 如果,某趟循环后,布尔变量 swap 仍然为 false,则说明此趟循环,
* 未发生过交换。 这意味着,数组已经有序,即排序操作已经完成,
* 排序应终止。因此,布尔变量 swap 为 true, 是外层循环的一个必要条件。
*/
for(i=n-1; i>0 && swap;--i) {
/*每次外层循环,先设布尔变量swap 为 false,说明尚未发生交换*/
swap=false;
/* The boolean flag remains false during the last bobble run,
* implying that no swap occurred and the whole array is completely sorted.
* In this case one should terminate the bubble sort process immediately.
*/
for(j=0;j<i;++j) // i 为外层循环的控制变量,在此用作内循环的上限。
/* 外层循环的控制变量 i 每次完成一趟循环后,递减1。
* 用它作内循环的上限,可以终止在稳定区内做不必要的比较。
*/
/* We use i ,which has one_decrease after each outer_for loop,
* as the upper limit for the inner_loop to avoid the unnecessary
* comparisons made of the stable region.
* The stable region is the array segement above the index i.
*/
if(a[j]<a[j+1]){ //若后边的元素比前边的大,即为逆序
/* 则将两个记录交换*/
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
swap=true;
/* 布尔变量值 swap 为 true 说明,
* 在这一趟起泡排序中,至少发生过一次交换。
*/
/* the boolean flag is true implying that
* at least a swap occurred during this bobble run
*/
}
System.out.print("The " + count++ + " run: ");
System.out.println(Arrays.toString(a));
}
}
public static void main(String[] args)
{
int[] array=new int[15];
Random rand= new Random();
for (int i=0;i<array.length;i++)
array[i]= rand.nextInt(120);
System.out.print("The original: ");
System.out.println(Arrays.toString(array));
bubble_sort(array);
}
}
输出:
The original: [113, 89, 105, 119, 84, 94, 35, 88, 35, 33, 72, 60, 119, 62, 42]
The 1 run: [113, 105, 119, 89, 94, 84, 88, 35, 35, 72, 60, 119, 62, 42, 33]
The 2 run: [113, 119, 105, 94, 89, 88, 84, 35, 72, 60, 119, 62, 42, 35, 33]
The 3 run: [119, 113, 105, 94, 89, 88, 84, 72, 60, 119, 62, 42, 35, 35, 33]
The 4 run: [119, 113, 105, 94, 89, 88, 84, 72, 119, 62, 60, 42, 35, 35, 33]
The 5 run: [119, 113, 105, 94, 89, 88, 84, 119, 72, 62, 60, 42, 35, 35, 33]
The 6 run: [119, 113, 105, 94, 89, 88, 119, 84, 72, 62, 60, 42, 35, 35, 33]
The 7 run: [119, 113, 105, 94, 89, 119, 88, 84, 72, 62, 60, 42, 35, 35, 33]
The 8 run: [119, 113, 105, 94, 119, 89, 88, 84, 72, 62, 60, 42, 35, 35, 33]
The 9 run: [119, 113, 105, 119, 94, 89, 88, 84, 72, 62, 60, 42, 35, 35, 33]
The 10 run: [119, 113, 119, 105, 94, 89, 88, 84, 72, 62, 60, 42, 35, 35, 33]
The 11 run: [119, 119, 113, 105, 94, 89, 88, 84, 72, 62, 60, 42, 35, 35, 33]
The 12 run: [119, 119, 113, 105, 94, 89, 88, 84, 72, 62, 60, 42, 35, 35, 33]
######你这个冒泡效率低了,不必要将 已经冒号泡的冒一遍######
冒牌排序,你是要假冒伪劣的排序算法吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。