置换选择排序代码c++
时间: 2023-07-02 18:06:44 浏览: 80
以下是使用置换选择排序算法的 C++ 代码:
```
#include <iostream>
#include <algorithm>
using namespace std;
void swap(int* a, int* b) {
int t = *a;
*a = *b;
*b = t;
}
void permuteSelectionSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
int min_idx = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[min_idx])
min_idx = j;
}
if (min_idx != i) {
swap(&arr[i], &arr[min_idx]);
swap(&i, &min_idx);
}
}
}
int main() {
int arr[] = { 64, 25, 12, 22, 11 };
int n = sizeof(arr) / sizeof(arr[0]);
permuteSelectionSort(arr, n);
cout << "Sorted array: \n";
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
cout << endl;
return 0;
}
```
该算法是选择排序算法的一种改进。不同之处在于,它在找到最小元素时,不仅交换该元素和当前位置的元素,而且还交换两个位置的索引。这使得该算法能够记录元素的交换历史,从而使其可逆。
阅读全文