气泡从高到低或从低到高

问题描述 投票:0回答:1

使用此方法怎么办?当我从低到高或从低到高放置时,它会排列吗?

String [] [] Data = {{“ Eugine”,“ 8”},{“ Ben”,“ 9”},{“ John”,“ 19”},{“ Jairus”,“ 5”}, {“ Sofia”,“ 13”}};

输出排序:从高到低约翰”,19索非亚13本“,9尤金8air鲁斯5排序:从低到高air鲁斯5尤金8本9索非亚13约翰,19

arrays string sorting validation bubble-sort
1个回答
0
投票

要从字符串中提取数字,请使用Integer.parseInt(str)

这可能是优化的,我做了一些更改,但是可以。

import java.util.stream.*;

class Main {
  //A little abstraction to make life easier
  static class Person {
    String name;
    int age;
    Person(String n, int a) {
      name = n;
      age = a;
    }
    public String toString() {
      return "[" + name + "," + age + "]";
    }
  }

  public static void main(String[] args) {
    String[][] data = {{"Eugine","8"},{"Ben","9"},{"John","19"},{"Jairus","5"},{"Sofia","13"}};
    Person[] res = bubblesort(data, false);
    System.out.println(Arrays.toString(res));
  }

  static Person[] bubblesort(String[][] data, boolean lowToHigh) {
    //Convert to a nicer structure
    Person[] ppl = Arrays.stream(data).map(
      (String[] arr) -> new Person(arr[0], Integer.parseInt(arr[1]))
    ).toArray(Person[]::new);
    boolean allGood = false;
    while (!allGood) {
      allGood = true;
      for (int i = 0; i < ppl.length - 1; i ++) {
        if ((ppl[i].age > ppl[i + 1].age && lowToHigh) || (ppl[i].age < ppl[i + 1].age && !lowToHigh)) {
          swap(ppl, i, i + 1);
          if (allGood) allGood = false;
        }
      }
    }

    return ppl;
  }

  static <T> void swap(T[] arr, int i, int j) {
    T temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
  }

}```
© www.soinside.com 2019 - 2024. All rights reserved.