首页 > 解决方案 > 通过“冒泡排序”按字母顺序对几个名称进行排序,并附上注释

问题描述

我有 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] + " ");
    }
  }
}

标签: java

解决方案


your own custom class创建一个数组然后应用排序总是安全的。

这样可以确保代码干净并减少出错的机会。

看看下面的代码,其中tabStringtabInt是类的一部分,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);
    }

}

推荐阅读