关于#java#的问题:请问一下这个插入排序的代码有没有什么问题啊

请问一下这个插入排序的代码有没有什么问题啊,总感觉看起来怪怪的


```java
    public static int[] getSortedArr(int[] arr) {
        //复制数组
        int[] sortedArr = new int[arr.length];
        System.arraycopy(arr, 0, sortedArr, 0, arr.length);

        //找到无序数据的开始索引
        int startIndex = -1;
        for (int i = 0; i < sortedArr.length; i++) {
            if (sortedArr[i] > sortedArr[i + 1]) {
                startIndex = i + 1;
                break;
            }
        }

        //循环次数
        int times = sortedArr.length - startIndex;
        for (int i = startIndex; i < startIndex + times; i++) {
            for (int j = 0; j < i; j++) {
                if (sortedArr[i - j] < sortedArr[i - 1 - j]) {
                    int temp = sortedArr[i - j];
                    sortedArr[i - j] = sortedArr[i - 1 - j];
                    sortedArr[i - 1 - j] = temp;
                } else {
                    break;
                }
            }
        }
        return sortedArr;
    }

```

是比较怪,找到所谓无序开始索引的操作,纯属多余

public static int[] getSortedArr(int[] arr) {
    // 复制数组
    int[] sortedArr = new int[arr.length];
    System.arraycopy(arr, 0, sortedArr, 0, arr.length);

    // 找到无序数据的开始索引
    int startIndex = -1;
    for (int i = 0; i < sortedArr.length - 1; i++) { // 修改点1:修正循环上限
        if (sortedArr[i] > sortedArr[i + 1]) {
            startIndex = i + 1;
            break;
        }
    }

    // 对无序部分进行插入排序
    for (int i = startIndex; i < sortedArr.length; i++) { // 修改点2:修正循环起始位置
        for (int j = 0; j < i - startIndex + 1; j++) { // 修改点3:修正内部循环条件
            if (sortedArr[i - j] < sortedArr[i - 1 - j]) {
                int temp = sortedArr[i - j];
                sortedArr[i - j] = sortedArr[i - 1 - j];
                sortedArr[i - 1 - j] = temp;
            } else {
                break;
            }
        }
    }

    return sortedArr;
}