排序算法
选择排序
选择排序呢就是根据,你的需求,来进行选择性排序,就比如一下的例子。
这些数据是9个人的身高,现在需要把这些数据从小到大来进行排序,那么我们该怎么做呢?
第一步
我们先从里面的数据中,找到最大的那个值,然后与最后一个元素交换便即可。
第二步
再找出除最后一个数据外其它数据中的最大值,与倒数第二个的数据交换位置。
重复以上步骤,直到最后只剩下一人,此时的数据已经按从小到大排序好了。
接下来我们用C/C++的代码来进行实现
代码实现
#include <iostream>
#include <Windows.h>
using namespace std;
void swap(int* num1, int* num2) { //交换两个指针的值
int temp = *num1;
*num1 = *num2;
*num2 = temp;
}
int main(void) {
int a[] = { 155,172,163,171,164,162,168,177,166 };
int len = sizeof(a) / sizeof(a[0]);
for (int i = 0; i < len - 1; i++) { //n个元素,执行n-1次
int max = 0;
for (int j = 1; j < len - i; j++) { //查找未排序的元素
if (a[j] > a[max]) {
max = j; //找到未排序元素中的最大值
}
}
if (max != len - i - 1) {
swap(&a[max], &a[len - i - 1]); //交换进行排序
}
}
cout << "------------排序后的数组元素----------" << endl;
for (int i = 0; i < len; i++) {
cout << a[i] << " ";
}
cout << endl;
system("pause");
return 0;
}
执行以上代码,得到的结果如图