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();
}
}
运行了下能排序:
但是你写的不是插入排序,给你改好了:
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();
}
}
排序算法没问题,问题这明显是冒泡排序,并不是插入排序。
插入排序:是将新来的元素按顺序放入一个已有的有序序列当中。
插入排序讲解很详细,学习一下吧: https://m.jb51.net/article/110428.htm https://m.jb51.net/article/110428.htm
如有帮助,望点击【本回答采纳】支持一下。