更新选择排序

This commit is contained in:
huihut 2018-02-11 00:20:34 +08:00
parent 9c123ec728
commit a7a6e38cac
4 changed files with 22 additions and 7 deletions

View File

@ -1,5 +1,4 @@
// 冒泡排序 // 冒泡排序
void BubbleSort(vector<int>& v) { void BubbleSort(vector<int>& v) {
int temp; int temp;
for (int i = 0; i < v.size() - 1; ++i) { for (int i = 0; i < v.size() - 1; ++i) {

View File

@ -1,14 +1,12 @@
// 冒泡排序(跳过有序的改进版) // 冒泡排序(改进版)
void BubbleSort_orderly(vector<int>& v) { void BubbleSort_orderly(vector<int>& v) {
int temp; int temp;
bool orderly = false; bool orderly = false;
for (int i = 0; i < v.size() - 1 && !orderly; ++i) { for (int i = 0; i < v.size() - 1 && !orderly; ++i) {
orderly = true; orderly = true;
for (int j = 0; j < v.size() - 1 - i; ++j) { for (int j = 0; j < v.size() - 1 - i; ++j) {
if (v[j] > v[j + 1]) if (v[j] > v[j + 1]) { // 从小到大
{ orderly = false; // 发生交换则仍非有序
orderly = false;
temp = v[j]; temp = v[j];
v[j] = v[j + 1]; v[j] = v[j + 1];
v[j + 1] = temp; v[j + 1] = temp;

17
Algorithm/SelectionSort.h Normal file
View File

@ -0,0 +1,17 @@
// 选择排序
void SelectionSort(vector<int>& v) {
int min, temp;
for (int i = 0; i < v.size() - 1; ++i) {
min = i;
for (int j = i + 1; j < v.size(); ++j) {
if (v[j] < v[min]) { // 标记最小的
min = j;
}
}
if (i != min) { // 交换到前面
temp = v[i];
v[i] = v[min];
v[min] = temp;
}
}
}

View File

@ -43,7 +43,8 @@
### 排序 ### 排序
* [冒泡排序](Algorithm/BubbleSort.h) * [冒泡排序](Algorithm/BubbleSort.h)
* [冒泡排序(跳过有序的改进版)](Algorithm/BubbleSort_orderly.h) * [冒泡排序(改进版)](Algorithm/BubbleSort_orderly.h)
* [选择排序](Algorithm/BubbleSort_orderly.h)
## Problems ## Problems