簡單選擇排序的思想是每次將未排序元素中的最小元素選出,放到已排序的末尾並右移。假設此處指升序排序。降序選最大元素放到前面。
#include <iostream>
using namespace std;
template <class T>
void SimpleSelectSortUp(T* ar, int n) {
int i, j, position;
T min;
for ( i = 0; i < n; i++)
{
cout << " " << i << " 次 " << " ";
min = ar[i];
// position用於標記最小值的位置,以將序列中最小值之前未排好序的值右移
position = i;
// 選出最小值
for (j = i; j < n; j++) {
if (ar[j] < min)
{
min = ar[j];
position = j;
}
}
cout << " min " << min;
for ( j = position; j > i; j--)
{
ar[j] = ar[j - 1];
}
ar[i] = min;
for (int loop = 0; loop < n; loop++)
{
cout << " " << ar[loop];
}
cout << endl;
}
}
int main(int argc, const char* argv[]) {
int* a = new int[6];
a[0] = 2;
a[1] = 0;
a[2] = 3;
a[3] = 1;
a[4] = 7;
a[5] = 5;
//BinaryInsertSortUp(a, 6);
//BinaryInsertSortDown(a, 6);
SimpleSelectSortUp(a, 6);
return 0;
}