私はSPOJの次の問題を解決しています。単純な挿入ソートアルゴリズムです。私のJavaコードは動作しますが、Cコードは間違った答えを与えています。 何が間違っているのですか?Cコードは間違った答えを与えますが、javaコードはspojの正解を返します
助けてくださいと感謝ロット...... :)
Javaコード
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(br.readLine());
while (t > 0) {
int n = Integer.parseInt(br.readLine());
String str = br.readLine();
String arr[] = str.split(" ");
int inputArr[] = new int[n];
for (int i = 0; i < n; i++) {
inputArr[i] = Integer.parseInt(arr[i]);
}
int key = 0;
int count = 0;
for(int i = 1; i < n; i++) {
key = inputArr[i];
int j = i - 1;
while (j >= 0 && inputArr[j] > key) {
inputArr[j + 1] = inputArr[j];
j = j - 1;
count++;
}
inputArr[j + 1] = key;
}
System.out.println(count);
t--;
}
}
}
Cコード
#include<stdio.h>
int main() {
int t=0;
scanf("%d",&t);
while(t > 0) {
int n=0;
scanf("%d",&n);
int arr[n];
int key=0;
for(int i=0; i<n; i++) {
scanf("%d",&arr[i]);
}
int count=0;
int j=0;
for(int i=1; i<n; i++) {
key = arr[i];
j = i - 1;
while(j>=0&&arr[j]>key) {
arr[j+1]=arr[j];
count++;
j = j-1;
}
arr[j+1]=key;
}
printf("%d",count);
t--;
}
return 0;
}
何が間違っていますか?何が正しい?あなたのインプットは何ですか?あなたは実際に何を見ますか? –
スワップ操作が挿入ソートで実行された回数 –
Javaコードは改行を追加する 'println'を使用しますが、Cコードには' printf'の出力に '\ n'はありません。 – aragaer