cpp-interview/Algorithm/SelectionSort.h

37 lines
857 B
C
Raw Normal View History

2018-03-28 13:06:39 +08:00
/*
1.
2.
3.
*/
2018-02-11 00:20:34 +08:00
// 选择排序
void SelectionSort(vector<int>& v) {
2018-03-28 13:06:39 +08:00
int min, len = v.size();
for (int i = 0; i < len - 1; ++i) {
2018-02-11 00:20:34 +08:00
min = i;
2018-03-28 13:06:39 +08:00
for (int j = i + 1; j < len; ++j) {
2018-02-11 00:20:34 +08:00
if (v[j] < v[min]) { // 标记最小的
min = j;
}
}
2018-03-28 13:06:39 +08:00
if (i != min) // 交换到前面
swap(v[i], v[min]);
}
}
// 模板实现
template<typename T>
void Selection_Sort(std::vector<T>& arr) {
2018-03-29 10:41:09 +08:00
int len = arr.size();
for (int i = 0; i < len - 1; i++) {
2018-03-28 13:06:39 +08:00
int min = i;
2018-03-29 10:41:09 +08:00
for (int j = i + 1; j < len; j++)
2018-03-28 13:06:39 +08:00
if (arr[j] < arr[min])
min = j;
2018-03-29 10:41:09 +08:00
if(i != min)
std::swap(arr[i], arr[min]);
2018-02-11 00:20:34 +08:00
}
}