苏木三少
错的不是你,而是这个世界。

<每天一个> 算法实现之冒泡排序

冒泡排序

算法介绍

原理:

比较两个相邻的元素,将值大的元素交换至右端。

思路:

依次比较相邻的两个数,将小数放在前面,大数放在后面。(可根据自己的要求改变if条件)

即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。

然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。

重复第一趟步骤,直至全部排序完成。第一趟比较完成后,最后一个数一定是数组中最大的一个数,所以第二趟比较的时候最后一个数不参与比较;

第二趟比较完成后,倒数第二个数也一定是数组中第二大的数,所以第三趟比较的时候最后两个数不参与比较;依次类推,每一趟比较次数-1;

注意事项:

1、老规矩数组长度确定,其次注意数组溢出;
2、常见报错
Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: -1
at test4.State.nextStates(State.java:9)
at test4.State.main(State.java:27)
说实话上面错误我也犯过,数据溢出了,0-1=-1,数组下标从0开始的。所以我直接用加哈哈哈哈哈。

算法实现:

我用的是升序哦,避免溢出我用加。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import java.util.Scanner;

public class BubbleSort {
    public static void Function(int a[]) {
        int i,j,temp;
        for(i=0;i<a.length-1;i++) {
            for(j=0;j<a.length-i-1;j++) {
                if(a[j]>a[j+1]) {
                    temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;
                }
            }
        }
    }

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        int i;
        int Arrays[] = new int[5];
        System.out.println("请输入五个数进行排序:");
        for(i=0;i<5;i++) {
            Scanner S =new Scanner(System.in);
            Arrays[i] = S.nextInt();
        }
        Function(Arrays);
        for(i=0;i<5;i++) {
            System.out.println("排序后数组为:"+Arrays[i]);
        }

    }

}

 

赞(5) 打赏
有问题的朋友随时留言,或者加我为好友。我的QQ是805375353. <<苏木三少博客 » <每天一个> 算法实现之冒泡排序

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

十年之约