cod*_*ast 1 c++ sorting algorithm
我正在阅读有关循环排序算法的内容,发现它本质上是不稳定的,但是,我很难想出一个案例来显示循环算法的不稳定性质。有人可以给出一个案例,我们可以观察到算法的不稳定性质吗?
有关该算法的更多信息:- https://en.wikipedia.org/wiki/Cycle_sort
这是我的循环排序算法代码:-
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int *arr;
arr=new int[n];
for (int i = 0; i < n; i++)
cin >> arr[i];
int cyStart, item, pos;
for (int cyStart = 0; cyStart < (n - 1); cyStart++)
{
item = arr[cyStart];
pos = cyStart;
for (int i = cyStart + 1; i < n; i++)
{
if (item > arr[i])
pos++;
}
if (pos == cyStart)
continue;
while (item == arr[pos])
pos++;
if (item != arr[pos])
swap(arr[pos], item);
while (cyStart != pos)
{
pos = cyStart;
for (int i = cyStart + 1; i < n; i++)
{
if (item > arr[i])
pos++;
}
while (item == arr[pos])
pos++;
if (item != arr[pos])
swap(arr[pos], item);
}
}
for(int i=0;i<n;i++)
cout << arr[i] << " ";
return 0;
}
Run Code Online (Sandbox Code Playgroud)