使用此代码时,我的循环没有终止。
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int size = Integer.parseInt(br.readLine());
int[] a = new int[size];
for(int i=0;i<a.length;i++) {
a[i] = Integer.parseInt(br.readLine());
}
countSwaps(a,size);
}
但是当我删除代码循环的最后一行时,终止该终止,否则不会终止。
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int size = Integer.parseInt(br.readLine());
int[] a = new int[size];
for(int i=0;i<a.length;i++) {
a[i] = Integer.parseInt(br.readLine());
}
}
功能定义为:
private static void countSwaps(int[] a, int size) {
int temp,count=0;
for(int i=0;i<size;i++){
for(int j=0;j<size-1;i++){
if(a[j]>a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
++count;
}
}
}
System.out.println("Array is sorted in"+count+"swaps.");
System.out.println("First Element:"+a[0]);
System.out.println("Last Element:"+a[a.length-1]);
}
答案 0 :(得分:1)
您的内部循环永远不会递增j
。
答案 1 :(得分:0)
此行:
for(int j=0;j<size-1;i++){
您正在循环j,但增加了i ++
更改为:
private static void countSwaps(int[] a, int size) {
int temp,count=0;
for(int i=0;i<size;i++){
for(int j=0;j<size-1;j++){
if(a[j]>a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
++count;
}
}
}
System.out.println("Array is sorted in"+count+"swaps.");
System.out.println("First Element:"+a[0]);
System.out.println("Last Element:"+a[a.length-1]);
}