题目描述
农场里的马,在草场开心地吃着牧草,直到天色晚了,牧马的人会将马依次按号牌大小,依次放入相应的位置。但是这马总是打乱了顺序,于是牧马人都会想办法把这些马都排好:每次从最前面开始,然后与后面的号牌进行比较,每次将小的号牌的马换到前面。
这牧马人整理马的顺序相当耗费体力,每次交换,消耗体力为两匹马槽位的距离“2。
他想知道,他要花费多少体力才能完成任务。
#include <stdio.h>
int selection_sort(int arr[], int n) {
int i, j, min_idx;
int sum = 0;
for (i = 0; i < n-1; i++) {
min_idx = i;
for (j = i+1; j < n; j++) {
if (arr[j] < arr[min_idx]) {
min_idx = j;
}
}
if (min_idx != i) {
sum += min_idx - i;
int temp = arr[i];
arr[i] = arr[min_idx];
arr[min_idx] = temp;
}
}
return sum;
}
int main() {
int n, i;
scanf("%d", &n);
int arr[n];
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int result = 2 * selection_sort(arr, n);
printf("%d", result);
return 0;
}