为了账号安全,请及时绑定邮箱和手机立即绑定

我需要一个程序来对整数数组进行交替排序,但它给了我一个 StackOverflow 错误

我需要一个程序来对整数数组进行交替排序,但它给了我一个 StackOverflow 错误

慕雪6442864 2022-01-12 10:04:14
我需要对一个整数数组进行交替排序,并且不允许使用任何包。我在这段代码上坐了很长时间,当它在纸上运行时,我大学使用的测试程序用 StackOverflow 评论我的代码。这是有问题的代码。我只是希望一些有经验的开发人员告诉我出了什么问题。我对Java很陌生。public class Functionality {public static int[] alternateSorting(int[] a) {    int v[] = new int[a.length];    int z = a.length;    if (z == 0) {        System.out.println("Error, empty Array");        return a;    }else {        for ( int i = 0; i < a.length; i++) {            v[i] = a[i];        }        boolean swapped;        do {            swapped = false;            for (int i = 1; i < v.length; i++) {                if (v[i-1] > v[i]) {                    int swap = v[i];                    v[i] = v[i-1];                    v[i-1] = swap;                    swapped = true;                }            }        }while (swapped);        for (int f = 0; f < a.length - 1; f++) {            for (int c = f + 1; c < a.length; c++)                if (v[c] == v[f]) {                    z = z - 1;                }         }        int b[]  = new int[z];        int k = v[0];        int g = v[v.length - 1];        int l = v.length;        int m = 1;        for (int i = 0; i < v.length; i++) {            if ( (i*2)%4 == 0) {                if (v[i] == v[i+1]) {                    b[i] = k;                    k = v[i+m+1];                    m--;                } else if (v[i] != v[i+1]) {                    b[i] = k;                    k = v[i+m];                    m--;                }else{                    b[i] = k;                }            }else {                if (v[l - 1] == v[l - 2]) {                    b[i] = g;                    g = v[l - 3];                    l--;                } else if (v[l - 1] != v[l - 2]) {                    b[i] = g;                    g = v[l - 2];                    l--;                } else {                    b[i] = g;                }            }        }return  b ;    }}数组 a 必须被整理出来。b 是返回的数组,v 是“工作”数组。感谢您的时间和关注。如果这对您造成困扰,我很抱歉。我是这个网站的新手,所以批评是好的!
查看完整描述

1 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

public class Functionality {


    public static void main(String args[]) {

        int[] ind = {1, 10, 2, 6, 11, 5};


        int res[] = alternateSorting(ind);


        for(int i=0; i< res.length; i++) {

            System.out.println(res[i]);    

        }


    }


    public static int[] alternateSorting(int[] a) {


        int v[] = new int[a.length];


        int z = a.length;



        if (z == 0) {


            System.out.println("Error, empty Array");

            return a;


        } else {



            for ( int i = 0; i < a.length; i++) {

                v[i] = a[i];

            }


            boolean swapped;


            do {


                swapped = false;

                for (int i = 1; i < v.length; i++) {


                    if (v[i-1] > v[i]) {

                        int swap = v[i];

                        v[i] = v[i-1];

                        v[i-1] = swap;

                        swapped = true;

                    }

                }

            } while (swapped);




            for (int f = 0; f < a.length; f++) {


                for (int c = f + 1; c < a.length; c++)


                    if (v[c] == v[f]) {


                        z = z - 1;


                    } 

            }



            int b[]  = new int[z];


            int k = v[0];


            int g = v[v.length - 1];


            int l = v.length;


            int m = 1;


            for (int i = 0; i < v.length; i++) {

                if ( (i*2)%4 == 0) {

                    if (v[i] == v[i+1]) {

                        b[i] = k;

                        k = v[i+m+1];

                        m--;

                    } else if (v[i] != v[i+1]) {

                        b[i] = k;

                        k = v[i+m];

                        m--;

                    }  else  {

                        b[i] = k;

                    }


                } else {

                    if (v[l - 1] == v[l - 2]) {

                        b[i] = g;

                        g = v[l - 3];

                        l--;

                    } else if (v[l - 1] != v[l - 2]) {

                        b[i] = g;

                        g = v[l - 2];

                        l--;

                    } else {

                        b[i] = g;

                    }

                }

            }

            return  b ;

        }

    }    

}

改进它以满足您的需求。这将输出:


1

11 

2

10

5

6


查看完整回答
反对 回复 2022-01-12
  • 1 回答
  • 0 关注
  • 163 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号