Answer:
Step-by-step explanation:
public class InsertionSort {
static int numComparisons;
static int numSwaps;
public static void insertionSort(int[] nums) {
for (int i = 1; i < nums.length; i++) {
int j = i;
while (j > 0 && nums[j] < nums[j - 1]) {
swap(nums, j, j - 1);
j--;
}
numComparisons++;
printNums(nums);
}
}
public static void main(String[] args) {
int[] nums = readNums();
printNums(nums);
insertionSort(nums);
System.out.println("comparisons: " + numComparisons);
System.out.println("swaps: " + numSwaps);
}
public static int[] readNums() {
Scanner scanner = new Scanner(System.in);
int count = scanner.nextInt();
int[] nums = new int[count];
for (int i = 0; i < count; i++) {
nums[i] = scanner.nextInt();
}
scanner.close();
return nums;
}
public static void printNums(int[] nums) {
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i]);
if (i < nums.length - 1) {
System.out.print(" ");
}
}
System.out.println();
}
public static void swap(int[] nums, int j, int k) {
int temp = nums[j];
nums[j] = nums[k];
nums[k] = temp;
numSwaps++;
}
}