gpt4 book ai didi

java - 排序分数?选择排序

转载 作者:太空宇宙 更新时间:2023-11-04 13:10:19 26 4
gpt4 key购买 nike

有两个名为ArrayFraction的java类。 Fraction 类用于表示两个整数的比率。有 accessor(getter) 和 mutators(setter) 方法以及其他允许用户设置分子和分母的方法。还包括在屏幕上将分数显示为配给的方法(例如 5/9)。

Array 类允许用户创建 7 个分数的数组。然后程序将按升序对分数进行排序。然后丢弃最大和最小分数,并将剩余分数加在一起。程序应该显示所有分数及其总和。总和应减少到最低金额。

假设有 7 个分数,

  • 6/7、2/4、3/18、1/8、10/20、2/6、3/4。

排序后

  • 1/8、3/18、2/6、2/4、10/20、3/4、6/7

删除最小和最大分数,然后得到其余部分的总和

  • 3/18 + 2/6 + 2/4 + 10/20 + 3/4 = 9/4

我对如何对 Array.java 类中的“分数”进行排序感到困惑。我将其命名为选择排序。另外,如何丢弃最小和最大的分数?

import java.io.*;
import java.util.*;


public class Array {

public static void selectionSort(Fraction[] arr)
{}

public static void setFraction(Fraction[] arr)
{
Scanner scan = new Scanner(System.in);
int i=0;
for (Fraction e : arr)
{
i++;
System.out.println("Input Numerator: " + i + " of 7");
e.setNumerator(scan.nextInt());

System.out.println("Input Denominator: " + i + " of 7");
e.setDenominator(scan.nextInt());
}
}

public static Fraction addFraction (Fraction x, Fraction y)
{
int gcd = 0;
Fraction sum = new Fraction();
gcd = x.getDenominator() * y.getDenominator();

sum = new Fraction(x.getNumerator() * y.getDenominator() +
x.getNumerator() * y.getDenominator() + y.getDenominator() * x.getNumerator(), gcd);
return sum;
}

private static final Scanner keyb = null;

public static void main(String[] args) {
Fraction fr[] = new Fraction[7];
String reduce = "";
Scanner keyb = new Scanner(System.in);

for (int i =0; i< fr.length; i++)
fr[i]=new Fraction();

Array.setFraction(fr);
Array.selectionSort(fr);

Fraction sum = Array.addFraction(fr[0], fr[1]);
for (int i =0; i <fr.length; i++) {
fr[i].display();
if(i<fr.length-1) {
System.out.print(" + ");
}

}

System.out.print(" = ");
sum.display();
}
}

这是分数:

import java.io.File;
import java.util.Scanner;


public class Fraction {
public static int length;
public int numerator = 1;
public int denominator = 1;
public int gcd;
public Fraction() {
super ();
}
public Fraction(int n, int d) {
numerator = n;
denominator = d;
}
public void display()
{
System.out.print(numerator +"/" + denominator);
}
public int getNumerator() {
return numerator;
}
public void setNumerator(int numerator) {
this.numerator = numerator;
}
public int getDenominator() {
return denominator;
}
public void setDenominator(int denominator) {
this.denominator = denominator;
}
private static int gcd(int numerator, int denominator) {
return denominator == 0 ? numerator : gcd(denominator, numerator % denominator);
}
public double decimal(double numerator, double denominator) {
return numerator / denominator;
}

public static void reduce(int numerator, int denominator) {
int gcd = gcd(numerator, denominator);
numerator /= gcd;
denominator /= gcd;
//return (numerator / gcd) + "/" + (denominator / gcd);
}

@Override
public String toString() {
return numerator + "/" + denominator;
}
}

最佳答案

在使用选择排序之前,您必须执行一些额外的工作,即
1. 首先,通过将每个分数乘以某个值,尝试使所有分数的分母相等,即分母的最小公倍数。
2. 并且,使用相同的值与其分子部分相乘。
3.第二步之后,你的分母是相同的,所以现在你可以在分子的基础上应用选择排序。 Ans,同样通过除以步骤 1 中使用的相应常数值来重新调整该值。

关于java - 排序分数?选择排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34034198/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com