C++排序算法之选择排序
来源:互联网 发布:足球基本技术动作知乎 编辑:程序博客网 时间:2024/04/29 13:13
选择排序基本思路
选择排序的基本思路就是,首先选出其中最小的值,放在第一个位置,然后选出第二小的数值,放在第二个位置,以此类推,直到所有数值都以从小到大的顺序排完。实现思路
首先,我们需要确定第n小的数所在位置,然后将其与第n个数进行对换。下面,我们使用2,3,1,4来进行选择排序说明,使用min_num来记录最小数所在位置。
第一轮交换:
2,3,1,4(min_num = 1)
2,3,1,4 (2<3,min_num = 1)
2,3,1,4(2>1,min_num = 3)
2,3,1,4(1<4,min_num = 3)
第一轮排序结果将2与1交换,最终得到
1,3,2,4第二轮交换:
1,3,2,4(min_num = 2)
1,3,2,4(3>2,min_num = 3)
1,3,2,4(2<4,min_num = 3)
1,2,3,4(将3与2进行交换)
第二轮结果
1,2,3,4第三轮交换(此处已经得到最终排序,这里是为了演示过程)
1,2,3,4(min_num= 3)
1,2,3,4(3<4,min_num = 3)
最终结果为:
1,2,3,4。排序完成。一般情况下,当有N个无序数组数字集合时,需要进行N-1次选择排序,第n轮选取第n小的数字,并将其放在第n的位置上面。下面是具体实现代码:
#include<iostream>#include<stdio.h>using namespace std;#define N 4void choose_sort(int a[],int b);//选择排序void choose_sort(int a[], int b){ //N-1轮排序 for ( int i = 0; i < b-1; i++) { int min_num = 1; for (int j = i+1;j < b; j++) { if (a[j] < a[min_num]){ min_num = j; } } //将第i小的数字,放在第i个位置,如果刚好,就不交换 if (i != min_num) { int temp = a[i]; a[i] = a[min_num]; a[min_num] = temp; } }}int main(){ int num[N] = {2,3,1,4}; choose_sort(num, N); for (int i = 0; i < N; i++) cout << num[i] << " "; system("pause"); return 0;}
至此,简单排序大功告成,看最后结果:
0 0
- C--经典算法之排序---选择排序
- C排序算法之选择排序法
- 排序算法之选择法排序(C/C++)
- C算法-选择排序
- 算法之选择排序【C语言】
- 排序算法之选择排序
- 排序算法之选择排序
- 排序算法之选择排序
- 排序算法之选择排序
- 【排序算法】之选择排序
- 排序算法之选择排序
- 排序算法之选择排序
- 排序算法之选择排序
- 排序算法之选择排序
- 排序算法之选择排序
- 排序算法之选择排序
- 算法-排序之选择排序
- 排序算法之选择排序
- 最优化复习要点
- 2016.12.17 2016年第四届湘潭大学新生趣味程序设计竞赛 E:Estrella's Travel
- 经典面试题之 —— 洗牌算法(打乱)
- 运维笔记25 (桥接,bond,team等网络配置)
- 在VS2013环境下MFC学习:给对话框添加背景图片
- C++排序算法之选择排序
- Node.js Path 模块
- 最优化复习要点
- elasticsearch 全文检索,geo地理位置附近的人查询
- shell script 的执行
- IO多路复用之epoll总结
- 机器学习-组合算法总结
- Hadoop是如何确定任意两个节点是位于同一机架(机架感知)
- webee板子测试CC2530