简单选择排序:每一次在待排序列中,选取最小(最大)的数据,放在待排的位置。
图例:
C代码实现:
int GetMinPos(int *arr
, int left
, int right
)
{
int Min
= left
;
for (int i
= left
+ 1; i
< right
; i
++)
{
if (arr
[Min
] > arr
[i
])
{
Min
= i
;
}
}
return Min
;
}
void SelectSort(int *arr
, int left
, int right
)
{
for (int i
= left
; i
< right
; i
++)
{
int j
= GetMinPos(arr
, i
, right
);
if (j
!= i
)
{
Swap(&arr
[i
], &arr
[j
]);
}
}
}
简单选择排序是一种很好理解的排序算法。
特性总结:
时间复杂度:O(N^2)空间复杂度:O(1)稳定性:稳定