基本的に、順序が乱れている配列内のペアの数を決定するアルゴリズムを Java で記述しようとしています。したがって、i と j を取り、j が配列内で i よりも高い位置にあるが、A[i] > A[j] の場合、これら 2 つの数値は反転としてカウントされます。現在、これは私が持っているものです:
for(int i = 0; i<n-1; i++){
if (A[i] > A[i+1]){
k++;
これが行うことは、互いに隣り合っているペアのみを比較するため、これを変更して、配列内で下の位置が上の数値よりも高い値である 2 つの数値を見つけようとしています。私はそのようなことをする方法を知っていますが、実行時間を (n+k) にしたいです。ここで、n は配列の長さ、k は配列内の反転の数です。
編集:挿入ソートを実装する私の試みは次のとおりです。
int k = 0;
int [] A = {5, 4, 3, 2, 1};
int n = A.length;
for(int i = 1; i < n; i++){
int temp = A[i];
int j;
for (j = i - 1; j >=0 && temp < A[j]; j--){
A[j + 1] = A[j];
A[j + 1] = A[j];
k++;
k は、反転の数を追跡することになっています。配列 5、4、3、2、1 の場合、返される数値は 6 です。そうですか?