Java 字符串的插入排序

Java 字符串的插入排序,java,arrays,string,char,insertion-sort,Java,Arrays,String,Char,Insertion Sort,我对编码相当陌生,我正在尝试使用插入排序从字符串数组中按字母顺序排列单个字符串。任何帮助都将不胜感激。 输入为“alpha”或s[5];我期待“aahlp”。我的代码目前打印出“alpha” publicstaticvoidmain(字符串[]args) { 字符串[]s=新字符串[]{“bob”、“charlie”、“mike”, “萝拉”、“阿诺德”、“阿尔法”}; 排序(s[5]); } 公共静态无效排序(字符串s) { 字符串temp=null; 对于(int i=1;i 0&s.cha

我对编码相当陌生,我正在尝试使用插入排序从字符串数组中按字母顺序排列单个字符串。任何帮助都将不胜感激。 输入为“alpha”或s[5];我期待“aahlp”。我的代码目前打印出“alpha”

publicstaticvoidmain(字符串[]args)
{
字符串[]s=新字符串[]{“bob”、“charlie”、“mike”,
“萝拉”、“阿诺德”、“阿尔法”};
排序(s[5]);
}
公共静态无效排序(字符串s)
{
字符串temp=null;
对于(int i=1;i 0&s.charAt(j-1)>下一个)
{ 
temp=s子串(0,i)+s子串(j-1)+s子串(i+1);
系统输出打印项次(温度);
j--;
}
//这就是问题似乎发生的地方:
temp=s子串(0,i)+下一个+s子串(i+1);
s=温度;
}
系统输出打印项次;
}

谢谢你们的帮助。我让它正常工作,甚至可以让它对整个字符串数组进行排序。如果你想知道的话,这是代码。(这已经编辑了好几次)

publicstaticvoidmain(字符串[]args)
{
字符串[]sa=新字符串[]{“bob”、“charlie”、“mike”,
“萝拉”、“阿诺德”、“阿尔法”、“贝塔”};
排序(sa);
对于(int i=0;i
请改用以下排序方法:

private static void sort(String s) {
    char[] charArray = s.toCharArray();
    Arrays.sort(charArray);
    System.out.println(new String(charArray));
}

由于
String
是不可变的,因此您无法对其进行真正的排序。但是,您可以获取底层字符数组并对其进行排序,然后从中创建一个新的
String

如果您的练习是自己实现这样的排序算法,那么您可以这样做:

public class StringSort {
    public static String insertionSort(String s) {
        return new String(insertionSort(s.toCharArray()));
    }

    private static String insertionSort(char[] array) {
        int len = array.length;

        for (int i = len - 1; i > 0; i--) {
            if (array[i] < array[i - 1]) {
                swap(array, i, i - 1);
            }
        }

        for (int i = 2; i < len; i++) {
            char temp = array[i];
            int j = i;
            while (temp < array[j - 1]) {
                array[j] = array[j - 1];
                j--;
            }
            array[j] = temp;
        }

        return new String(array);
    }

    private static  void swap(char[] array, int i, int j) {
        char temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }

    public static void main(String[] args) {
        String s = "alpha";
        String sSorted = insertionSort(s);
        System.out.println(sSorted);
    }
}

您的代码当前生成的一些输入、预期结果和实际(不正确?)结果如何?
从字符串数组中按字母顺序排列单个字符串是什么意思?
即按字母顺序排列的“dcba”是“abcd”。在开发的后期,我将使用for循环对整个字符串进行排序[]s;目前,我希望能够对s中的一个元素进行排序-该元素为s[5]或“alpha”。我会改变您的方法,给定字符串是不可变的,首先使用tocharray()获取其字符,然后使用新字符串(sortedCharray)在最后生成结果字符串因为字符串是不可变的,所以不要对字符串本身进行排序。对
char[]chars
进行排序您可以获得
String\tocharray()
,然后返回
新字符串(chars)
。我的作业需要使用插入排序,否则第二种方法最好。谢谢,我不知道我不能更改字符串。很高兴我咨询了stackoverflow!
private static void sort(String s) {
    char[] charArray = s.toCharArray();
    Arrays.sort(charArray);
    System.out.println(new String(charArray));
}
public class StringSort {
    public static String insertionSort(String s) {
        return new String(insertionSort(s.toCharArray()));
    }

    private static String insertionSort(char[] array) {
        int len = array.length;

        for (int i = len - 1; i > 0; i--) {
            if (array[i] < array[i - 1]) {
                swap(array, i, i - 1);
            }
        }

        for (int i = 2; i < len; i++) {
            char temp = array[i];
            int j = i;
            while (temp < array[j - 1]) {
                array[j] = array[j - 1];
                j--;
            }
            array[j] = temp;
        }

        return new String(array);
    }

    private static  void swap(char[] array, int i, int j) {
        char temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }

    public static void main(String[] args) {
        String s = "alpha";
        String sSorted = insertionSort(s);
        System.out.println(sSorted);
    }
}
private static void sort(String s) {
    char[] array = s.toCharArray();
    Arrays.sort(array);
    System.out.println(new String(array));
}