【发布时间】:2017-04-26 01:24:23
【问题描述】:
我的插入排序输出不正确。当我尝试调用insertionSort方法时,返回的数组没有排序
break 语句的使用是否正确?
public int[] insertionSort(int [] arr){
for(int i=1;i<arr.length;i++){
for(int j=0;j<=i-1;){
int temp;
if(arr[i] < arr[j]){
temp=arr[i]; arr[i]=arr[j]; arr[j]=temp;
break;
}
else j++;
}
}
return arr;
}
用int [] array = {10,5,6,7,1,9,3,8}调用方法,但结果不正确:
排序后的输出: 1, 3, 7, 8, 5, 10, 6, 9, // 输出没有排序,但略有变化
【问题讨论】:
-
请尝试搜索插入排序的正确java实现并与您的进行比较以找出问题
-
你为什么要打破 if 语句?
-
如果里面发生了什么,你能解释一下吗?
-
你正在打破内部循环,因此退出它。查看维基百科上的伪代码。没有任何东西会从循环中中断。 en.m.wikipedia.org/wiki/Insertion_sort
标签: java arrays sorting break insertion-sort