java - 通过“冒泡排序”按字母顺序对几个名称进行排序,并附上注释
问题描述
我有 2 个具有多个名称和注释的数组
String[] tabString = {"Erika", "Amelia", "Celine"};
int[] tabInt = {4,5,8};
例如,我必须按字母顺序排序
"Amelia" => 5
"Celine" => 8
"Erika" => 4
但是,我必须使用一种bubbleSort
方法!sort()
本练习不允许使用该功能。
这是我的方法(我不知道它是否正确?)
public static void bubbleSort(String[] stringArray) {
int n = stringArray.length;
String temp;
for (int i = 0; i < n; i++) {
for (int j = 1; j < (n - i); j++) {
if (stringArray[j - 1].compareTo( stringArray[j] ) > 0) {
temp = stringArray[j - 1];
stringArray[j - 1] = stringArray[j];
stringArray[j] = temp;
}
}
}
}
我坚持显示,我应该如何检索我的 2 个数组?我必须做2个循环?
public static void display(String[] tabString, int[] tabInt){
for(int i=0; i<tabString.length; i++){
System.out.print(tabString[i] + " ");
}
}
}
解决方案
your own custom class
创建一个数组然后应用排序总是安全的。
这样可以确保代码干净并减少出错的机会。
看看下面的代码,其中tabString
和tabInt
是类的一部分,Pair
排序是基于tabString
:
import java.io.*;
import java.util.*;
//Our custom class to hold tabString and tabInt
class Pair {
String tabString;
int tabInt;
// Constructor
public Pair(String tabString, int tabInt)
{
this.tabString = tabString;
this.tabInt = tabInt;
}
}
public class Solution{
static void bubbleSort(Pair[] arr) {
int n = arr.length;
String temp;
for (int i = 0; i < n; i++) {
for (int j = 1; j < (n - i); j++) {
if (arr[j - 1].tabString.compareTo( arr[j].tabString ) > 0) {
temp = arr[j - 1].tabString;
arr[j - 1].tabString = arr[j].tabString;
arr[j].tabString = temp;
}
}
}
}
static void printArray(Pair arr[])
{
int n = arr.length;
for (int i=0; i<n; ++i)
System.out.println(arr[i].tabString + " " + arr[i].tabInt);
}
public static void main(String[] args) {
String[] tabString = {"Erika", "Amelia", "Celine"};
int[] tabInt = {4,5,8};
int N = tabString.length;
Pair arr[] = new Pair[N];
for(int i=0;i<N;i++){
arr[i] = new Pair(tabString[i], tabInt[i]);
}
bubbleSort(arr);
printArray(arr);
}
}
推荐阅读
- python - Python - 组合框,不选择值
- angular - setErrors({ backend: true }) 不起作用,因为 formcontrol 具有值或由于 ngfor 循环
- salesforce - 如何在visualforce的顶点命令按钮中调用参数化控制器?
- reactjs - React i18next 从前端(例如 localhost:3000)和后端(例如 localhost:5000)加载翻译文件
- powerbi - DAX 公式计算奖金或所得税
- javascript - 在 Google Chrome 上使用 GPU 在 HTML5 Canvas 上绘图
- css - 网格项“链接”未按预期居中
- java - 如何在显式实现 ResultSetExtractor 时关闭 ResultSet
- ms-access-2003 - microsoft 365 Access 上的 CommonDialog 工作
- java - 从 Java 中的 ByteArrayOutputStream 生成后损坏的 PDF 文件