int find_max(int const *arr, const int begin, const int len) { int i, maxNum, maxMark; maxNum = arr[begin]; maxMark = begin; for (i=begin+1; i!=len; ++i) { if (arr[i]>maxNum) { maxNum = arr[i]; maxMark = i; } } return maxMark; } void part_max_sort(int *data, const int len, const int d) { int i, idx; int tmp; for (i = 0; i != d; ++i) { idx = find_max(&data[0], i, len); if (idx != i) { tmp = data[i]; data[i] = data[idx]; data[idx] = tmp; } } }