第三章 ALDS1_2_B:Selection Sort 选择排序法
2017-12-22 00:37
246 查看
知识点
选择排序法执行步骤(1)数组A一开始处于未排序状态
(2)从未排序部分找出出最小值的位置minj。
(3)将minj位置的元素与未排序部分的起始位置交换
(4)交换后,则前一步骤的起始位置就是排序后的元素,未排序部分的元素就从下一位开始
(5)执行步骤(2),直到全部元素都排序好。
小结
时间复杂度O(n2),空间复杂度O(n), 是不稳定排序问题链接
ALDS1_2_B:Selection Sort问题内容
计算数列A通过选择排序法交换元素的次数和排序完的结果思路
在选择排序法交换元素后累加即可代码
#include<iostream> #include<cstdio> #include<cmath> using namespace std; // 选择排序法 int selectionSort(int A[], int n) { int cnt = 0; for (int i = 0; i < n; i++) { int minj = i; for (int j = i; j < n; j++) { if (A[j] < A[minj]) minj = j; } if (i != minj) swap(A[i], A[minj]), cnt++; } return cnt; } int main() { int n, A[110]; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", &A[i]); int cnt = selectionSort(A, n); for (int i = 0; i < n; i++) printf("%d%c", A[i], i == n - 1 ? '\n' : ' '); printf("%d\n", cnt); return 0; }
相关文章推荐
- 第三章 ALDS1_2_A:Bubble Sort 冒泡排序法
- 第三章 ALDS1_2_C:Stable Sort 稳定排序
- 第三章 ALDS1_2_D:Shell Sort 希尔排序法
- 选择排序法(Selection Sort) 复习--附图示说明
- 选择排序法 (Selection Sort)
- C++选择排序法(Selection Sort)
- ALDS1_2_B:Selection Sort
- 排序例子:利用选择排序法(Selection sort)对数组排序
- 第三章 ALDS1_1_A:Insertion Sort 插入排序法
- 长尾理论读书笔记:第三章 长尾简史
- Rails读书笔记第三章
- 第八章 ALDS1_7_B:Binary Trees 二叉树
- 程序员的爱情 第三章
- 再读大道之简第三章
- 《Python编程从入门到实践》_第三章_列表简介
- C专家编程学习笔记&mdash;&mdash;第三章(三):有效地解读C语言的声明
- 《大道至简》第三章读后感
- Java中的选择排序法
- 第三章,C++中的C
- 《大道至简》第三章读后感