插入排序这样写代码对吗?


public class Insertion {

    public static void main(String[] args) {
        int[] arr = { 5,8,2,6,9,3,4,7,1 };
        
        for (int j = 0; j < arr.length; j++) {
            for (int i = j + 1; i < arr.length; i++) {
                if (arr[i] < arr[j]) {
                    swap(arr, i, j);
                }
            }
            System.out.println("第" + (j + 1) + "次:");
            print(arr);
        }
    }

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

    static void print(int[] arr) {
        for (int k : arr) {
            System.out.print(k + " ");
        }
        System.out.println();
    }
}

运行了下能排序:

img
但是你写的不是插入排序,给你改好了:

 
public class Insertion {
    public static void main(String[] args) {
        int[] array = { 5,8,2,6,9,3,4,7,1 };
        int temp,i,j;
        for( i=1;i<array.length;i++) {
            temp=array[i];
            for(j=i-1;j>=0;j--) {
                if(temp>array[j]) {
                    break;
                }else {
                    array[j+1]=array[j];
                }
                }
            array[j+1]=temp;
            System.out.println("第" + i + "次:");
            print(array);
        }
    }
    static void print(int[] arr) {
        for (int k : arr) {
            System.out.print(k + " ");
        }
        System.out.println();
    }
}

img

排序算法没问题,问题这明显是冒泡排序,并不是插入排序。
插入排序:是将新来的元素按顺序放入一个已有的有序序列当中。

插入排序讲解很详细,学习一下吧: https://m.jb51.net/article/110428.htm https://m.jb51.net/article/110428.htm

img
如有帮助,望点击【本回答采纳】支持一下。