Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 气泡排序并行阵列_Java - Fatal编程技术网

Java 气泡排序并行阵列

Java 气泡排序并行阵列,java,Java,我已经运行了这个程序-结果应该是 12,12.0 8,8.0 7,0.7 5,2.5 5,0.25 然而,当我运行这个程序时,我得到了结果 8,8.0 7,0.7 5,0.25 12,12.0 5,2.5 我已经尽了最大的努力使数字按上述第一个例子的顺序排列 有人能给我一个解决办法吗 public class BubParArrays { public static void main(String[] args) { int saleUnits[] = {5,

我已经运行了这个程序-结果应该是

12,12.0
8,8.0
7,0.7
5,2.5
5,0.25
然而,当我运行这个程序时,我得到了结果

8,8.0
7,0.7
5,0.25
12,12.0
5,2.5
我已经尽了最大的努力使数字按上述第一个例子的顺序排列 有人能给我一个解决办法吗

public class BubParArrays {

    public static void main(String[] args) {

        int saleUnits[] = {5, 12, 5, 7, 8};
        double salePrices[] = {2.5, 12.0, 0.25, 0.7, 8.0};
        int pass, comparison, tempsaleunit;
        double tempsaleprice;
        String results = "";

        for (pass = 1; pass <= saleUnits.length - 1; pass++) {
            for (comparison = 1; comparison <= saleUnits.length - pass; comparison++) {
                if (saleUnits[comparison - 1] < saleUnits[comparison]) {
                    System.out.println("If saleUnits[ " + (comparison - 1) + " ]  <  salesUnits  [ " + comparison + "] \n ");
                }

                {
                    tempsaleunit = saleUnits[comparison - 1];
                    System.out.println("tempsaleunit \t" + tempsaleunit + " = saleUnits [ " + (comparison) + " ]");

                    saleUnits[comparison - 1] = saleUnits[comparison];
                    System.out.println(" saleUnits [ " + (comparison - 1) + " ]" + " = saleUnits [ " + (comparison) + " ]");

                    saleUnits[comparison] = tempsaleunit;
                    System.out.println(" saleUnits[ " + comparison + " ] " + " =  tempsaleunit " + tempsaleunit);

                    tempsaleprice = salePrices[comparison - 1];
                    System.out.println(" tempsaleprice \t" + tempsaleprice + " =  salePrices [ " + (comparison - 1) + "]");

                    salePrices[comparison - 1] = salePrices[comparison];
                    System.out.println(" salePrices[ " + (comparison - 1) + " ] = salePrices [ " + (comparison) + "]");

                    salePrices[comparison] = tempsaleprice;
                    System.out.println(" salePrices [ " + comparison + "] =  tempsaleprice  " + tempsaleprice + "\n");
                }
            }
        }

        for (int index = 0; index < (saleUnits.length); index++) {
            results = results + saleUnits[index] + "," + salePrices[index] + "\n";
        }
        System.out.print(" Sorted on units of sale \n" + results);
    }
}
公共类bubpararray{
公共静态void main(字符串[]args){
int saleUnits[]={5,12,5,7,8};
双倍销售价格[]={2.5,12.0,0.25,0.7,8.0};
int pass,比较,tempsale单位;
双倍价格;
字符串结果=”;

对于(pass=1;passFYI),这不是冒泡排序,您正在混合选择排序和冒泡排序。。。 更改这些循环条件

 for (pass = 1; pass <= saleUnits.length - 1; pass++) {
 for (comparison = 1; comparison <= saleUnits.length - pass; comparison++)

for(pass=1;pass您的代码令人难以置信地难以理解。我将首先实现在两种类型的数组中交换元素的方法

private static void swap(int[] arr, int i, int j) {
    if (i == j) {
        return;
    }
    int temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
}

private static void swap(double[] arr, int i, int j) {
    if (i == j) {
        return;
    }
    double temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
}
然后同步
交换
,如

编辑

当然,创建和使用内置排序更有效

static class SalesData implements Comparable<SalesData> {
    final int units;
    final double price;

    public SalesData(int units, double price) {
        this.units = units;
        this.price = price;
    }

    @Override
    public String toString() {
        return String.format("%s %s", units, price);
    }

    @Override
    public int compareTo(SalesData o) {
        if (this.units != o.units) {
            return -Integer.valueOf(this.units).compareTo(o.units);
        }
        return -Double.valueOf(this.price).compareTo(o.price);
    }
}

public static void main(String[] args) {
    int saleUnits[] = { 5, 12, 5, 7, 8 };
    double salePrices[] = { 2.5, 12.0, 0.25, 0.7, 8.0 };
    SalesData[] data = new SalesData[saleUnits.length];
    for (int i = 0; i < saleUnits.length; i++) {
        data[i] = new SalesData(saleUnits[i], salePrices[i]);
    }
    Arrays.sort(data);
    for (SalesData sdt : data) {
        System.out.println(sdt);
    }
}
静态类SalesData实现可比较的{
最终整数单位;
最终双倍价格;
公共销售数据(整数单位,双倍价格){
这个。单位=单位;
这个价格=价格;
}
@凌驾
公共字符串toString(){
返回字符串。格式(“%s%s”,单位,价格);
}
@凌驾
公共整数比较(SalesData o){
如果(this.units!=o.units){
return-Integer.valueOf(this.units).compareTo(o.units);
}
return-Double.valueOf(此价格)。compareTo(o.price);
}
}
公共静态void main(字符串[]args){
int saleUnits[]={5,12,5,7,8};
双倍销售价格[]={2.5,12.0,0.25,0.7,8.0};
SalesData[]数据=新的SalesData[saleUnits.length];
对于(int i=0;i
因为我认为我不应该做你的家庭作业,这里有一个伪代码版本的算法供你使用

过程bubbleSort(A:可排序项列表)
n=长度(A)
重复
交换=错误
对于i=1到n-1(包括do)
/*如果这双坏了*/
如果A[i-1]>A[i],那么
/*交换它们,记住一些改变*/
掉期(A[i-1],A[i])
交换=真
如果结束
结束
直到没有交换

结束过程

您在这里遇到了问题,这是因为您如何从一开始就构建数据。从数据中,我推断您手头有库存以及销售价格。那么,您是真的在对数据进行排序,还是试图确定哪些库存与哪些销售项目相匹配?是否有理由将数据结构化为t他的?如果是,原因是什么(这将有助于解决方案),如果不是,请重新构造数据,以在更合适的庄园中开始。我很抱歉。我所要做的只是按顺序对两个数组进行排序,即salesUnits{5,12,5,7,8}和salesPrices{2.5,12.0,0.25,0.7,8.0}的排序所以答案应该是12,8,7,5,5,除此之外,价格按降序排列12.0,8.0,0.7,2.5,0.25这是本书中的一个示例练习,它的答案如我在开始时所概述的那样打印出来。我试图找出为什么它没有按应有的顺序排序-谢谢你的输入-我知道我的代码到处都是,但是我只是在学习。我真的很抱歉,这个问题被称为冒泡排序平行数组。你是对的,我只是尝试按顺序对两个数组进行排序,并排发送-我尝试了你的解决方案,它没有对数字进行排序me@rover2015请检查整个代码,因为它给了我正确的输出!好的,我花了一段时间才看到我在哪里ent错误它现在正在工作非常感谢我现在将研究它,看看为什么它在我们设置pass的示例中首先是错误的(pass=1;pass我打印了每一行,甚至是为了看看我哪里出错了我不明白为什么它没有比较我现在看到了谢谢:)完成:)新来的斯塔克-我非常努力地想离开-我不想让任何人帮我做作业!!!!
if (saleUnits[comparison - 1] < saleUnits[comparison]) {
                System.out.println("If saleUnits[ " + (comparison - 1) + " ]  <  salesUnits  [ " + comparison + "] \n ");
public class BubParArrays {
    public static void main(String[] args) {
        int saleUnits[] = {5, 12, 5, 7, 8};
        double salePrices[] = {2.5, 12.0, 0.25, 0.7, 8.0};
        int pass, comparison, tempsaleunit;
        double tempsaleprice;
        String results = "";

        for (pass = 0; pass < saleUnits.length; pass++) {
            for (comparison = 1; comparison <= saleUnits.length-1; comparison++) {
                if (saleUnits[comparison - 1] < saleUnits[comparison]) {
                    System.out.println("If saleUnits[ " + (comparison - 1) + " ]  <  salesUnits  [ " + comparison + "] \n ");

                    tempsaleunit = saleUnits[comparison - 1];
                    System.out.println("tempsaleunit \t" + tempsaleunit + " = saleUnits [ " + (comparison) + " ]");

                    saleUnits[comparison - 1] = saleUnits[comparison];
                    System.out.println(" saleUnits [ " + (comparison - 1) + " ]" + " = saleUnits [ " + (comparison) + " ]");

                    saleUnits[comparison] = tempsaleunit;
                    System.out.println(" saleUnits[ " + comparison + " ] " + " =  tempsaleunit " + tempsaleunit);

                    tempsaleprice = salePrices[comparison - 1];
                    System.out.println(" tempsaleprice \t" + tempsaleprice + " =  salePrices [ " + (comparison - 1) + "]");

                    salePrices[comparison - 1] = salePrices[comparison];
                    System.out.println(" salePrices[ " + (comparison - 1) + " ] = salePrices [ " + (comparison) + "]");

                    salePrices[comparison] = tempsaleprice;
                    System.out.println(" salePrices [ " + comparison + "] =  tempsaleprice  " + tempsaleprice + "\n");
                }
            }
        }

        for (int index = 0; index < (saleUnits.length); index++) {
            results = results + saleUnits[index] + "," + salePrices[index] + "\n";
        }
        System.out.print(" Sorted on units of sale \n" + results);
    }
}
If saleUnits[ 0 ]  <  salesUnits  [ 1] 

tempsaleunit    5 = saleUnits [ 1 ]
 saleUnits [ 0 ] = saleUnits [ 1 ]
 saleUnits[ 1 ]  =  tempsaleunit 5
 tempsaleprice  2.5 =  salePrices [ 0]
 salePrices[ 0 ] = salePrices [ 1]
 salePrices [ 1] =  tempsaleprice  2.5

If saleUnits[ 2 ]  <  salesUnits  [ 3] 

tempsaleunit    5 = saleUnits [ 3 ]
 saleUnits [ 2 ] = saleUnits [ 3 ]
 saleUnits[ 3 ]  =  tempsaleunit 5
 tempsaleprice  0.25 =  salePrices [ 2]
 salePrices[ 2 ] = salePrices [ 3]
 salePrices [ 3] =  tempsaleprice  0.25

If saleUnits[ 3 ]  <  salesUnits  [ 4] 

tempsaleunit    5 = saleUnits [ 4 ]
 saleUnits [ 3 ] = saleUnits [ 4 ]
 saleUnits[ 4 ]  =  tempsaleunit 5
 tempsaleprice  0.25 =  salePrices [ 3]
 salePrices[ 3 ] = salePrices [ 4]
 salePrices [ 4] =  tempsaleprice  0.25

If saleUnits[ 1 ]  <  salesUnits  [ 2] 

tempsaleunit    5 = saleUnits [ 2 ]
 saleUnits [ 1 ] = saleUnits [ 2 ]
 saleUnits[ 2 ]  =  tempsaleunit 5
 tempsaleprice  2.5 =  salePrices [ 1]
 salePrices[ 1 ] = salePrices [ 2]
 salePrices [ 2] =  tempsaleprice  2.5

If saleUnits[ 2 ]  <  salesUnits  [ 3] 

tempsaleunit    5 = saleUnits [ 3 ]
 saleUnits [ 2 ] = saleUnits [ 3 ]
 saleUnits[ 3 ]  =  tempsaleunit 5
 tempsaleprice  2.5 =  salePrices [ 2]
 salePrices[ 2 ] = salePrices [ 3]
 salePrices [ 3] =  tempsaleprice  2.5

If saleUnits[ 1 ]  <  salesUnits  [ 2] 

tempsaleunit    7 = saleUnits [ 2 ]
 saleUnits [ 1 ] = saleUnits [ 2 ]
 saleUnits[ 2 ]  =  tempsaleunit 7
 tempsaleprice  0.7 =  salePrices [ 1]
 salePrices[ 1 ] = salePrices [ 2]
 salePrices [ 2] =  tempsaleprice  0.7

 Sorted on units of sale 
12,12.0
8,8.0
7,0.7
5,2.5
5,0.25
private static void swap(int[] arr, int i, int j) {
    if (i == j) {
        return;
    }
    int temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
}

private static void swap(double[] arr, int i, int j) {
    if (i == j) {
        return;
    }
    double temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
}
public static void main(String[] args) {
    int saleUnits[] = { 5, 12, 5, 7, 8 };
    double salePrices[] = { 2.5, 12.0, 0.25, 0.7, 8.0 };
    for (int i = 0; i < saleUnits.length - 1; i++) {
        for (int j = i + 1; j < saleUnits.length; j++) {
            if (saleUnits[i] < saleUnits[j]) {
                swap(saleUnits, i, j);
                swap(salePrices, i, j);
            }
        }
    }
    for (int i = 0; i < saleUnits.length; i++) {
        System.out.printf("%2d %.2f%n", saleUnits[i], salePrices[i]);
    }
}
12 12.00
 8 8.00
 7 0.70
 5 2.50
 5 0.25
static class SalesData implements Comparable<SalesData> {
    final int units;
    final double price;

    public SalesData(int units, double price) {
        this.units = units;
        this.price = price;
    }

    @Override
    public String toString() {
        return String.format("%s %s", units, price);
    }

    @Override
    public int compareTo(SalesData o) {
        if (this.units != o.units) {
            return -Integer.valueOf(this.units).compareTo(o.units);
        }
        return -Double.valueOf(this.price).compareTo(o.price);
    }
}

public static void main(String[] args) {
    int saleUnits[] = { 5, 12, 5, 7, 8 };
    double salePrices[] = { 2.5, 12.0, 0.25, 0.7, 8.0 };
    SalesData[] data = new SalesData[saleUnits.length];
    for (int i = 0; i < saleUnits.length; i++) {
        data[i] = new SalesData(saleUnits[i], salePrices[i]);
    }
    Arrays.sort(data);
    for (SalesData sdt : data) {
        System.out.println(sdt);
    }
}