联盟文明网站建设有新突破,优秀设计网站大全,今天招工招聘信息,招投标网站建设排序算法-选择排序法#xff08;SelectionSort#xff09;
1、说明
选择排序法也是枚举法的应用#xff0c;就是反复从未排序的数列中取出最小的元素#xff0c;加入另一个数列中#xff0c;最后的结果即为已排序的数列。选择排序法可使用两种方式排序#xff0c;即在所… 排序算法-选择排序法SelectionSort
1、说明
选择排序法也是枚举法的应用就是反复从未排序的数列中取出最小的元素加入另一个数列中最后的结果即为已排序的数列。选择排序法可使用两种方式排序即在所有的数据中若从小到大排序则将最大值放入第一个位置若从小到大排序则将最大值放入最后一个位置。例如一开始在所有的数据中挑选一个最小项放在第一个位置假设是从小到大排序再从第二项开始挑选一个最小项放在第2个位置以此重复直到完成排序位置。 2、算法分析
无论是最坏情况、最好情况还是平均情况都需要找到最大值或最小值因此其比较次数为次时间复杂度为。由于选择排序是以最大值或最小值直接与最前方未排序的键值交换数据排序顺序很有可能被改变因此它不是稳定排序。因此只需一个额外的空间所以空间复杂度为最佳。比较适用于数据量小或有部分数据已经过排序的情况。 3、C代码
#includeiostream
using namespace std;int main() {int data[6] { 9,7,5,3,4,6 };cout 原始数据 endl;for (int i 0; i 6; i) {cout data[i] ;}cout endl;//第1次排序结果//3 9 7 5 4 6//第2次排序结果//3 4 9 7 5 6//第3次排序结果//3 4 5 9 7 6//第4次排序结果//3 4 5 6 9 7//第5次排序结果//3 4 5 6 7 9for (int i 0; i 5; i) {for (int j i 1; j 6; j) {//data[i] data[j] 从大到小排序的条件//data[i] data[j] 从小到大排序的条件if (data[i] data[j]) { int temp 0;temp data[i];data[i] data[j];data[j] temp;}}}cout 最终数据 endl;for (int i 0; i 6; i) {cout data[i] ;}cout endl;return 0;
}
输出结果