欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

基本数据结构 - 利用递归完成气泡排序

最编程 2024-10-15 19:54:27
...

冒泡排序

冒泡排序就是通过第一个元素依次与后面的元素进行比较,如果第一个元素比第二个元素大,那我们进行两个元素的交换,再调用这个交换函数,完成递归冒泡排序

如上完成了一轮冒泡排序,我们来根据思路完成代码。

private static void bubble1(int[]a,int j){
        if(j==0){
            return;
        }
        for(int i=0;i<j;i++){
            if(a[i]>a[i+1]){
                int temp = a[i];
                a[i] = a[i+1];
                a[i+1] = temp;
            }
        }
        bubble1(a,j-1);
    }

在上述代码中,我们传入两个参数,一个数组一个末尾指针。

我们进入迭代比较,每完成一次交换循环,开始继续调用,当末尾指针指向0索引的时候终止调用。

我们来思考一个问题,如果在完全遍历结束之前,数组就已经按照顺序排序的话,我们是不是可以提前返回数组呢,而不是继续循环到结束

我们只需要设置一个新的值x初值为0,如果发生了交换操作,就将该x赋值为当前的i(发生交换的索引)

我们来看代码:

private static void bubble(int[]a,int j){
        if(j==0){
            return;
        }
        int x=0;
        for(int i=0;i<j;i++){
            if(a[i]>a[i+1]){
                int temp = a[i];
                a[i] = a[i+1];
                a[i+1] = temp;
                x=i;
            }
        }
        bubble(a,x);
    }

    public static void sort(int[] a){
        bubble(a,a.length-1);
    }

并且实现了一个sort方法,便于用户调用

推荐阅读