算法学习之旅,中级篇(1)-–选择排序
来源:互联网 发布:bi商业智能和数据平台 编辑:程序博客网 时间:2024/05/17 22:07
介绍
在要排序的一组数中,选出最小的,或者最大的一个数与第一个位置的数交换,然后在剩下的数当中再找最小,或者最大的与第二个位置的数交换。
以此类推。。。
直到第n-1个元素和第n个元素比较为止。
分析
第一躺:从n个数中找出最小的数与第一个数交换位置。
第二趟:从第二个数开始的n-1个数找到最小的数与第二个数交换位置。
以此类推。。。
第i躺:从第i个数开始到n-i+1个数中选出最小的数与第i个数交换位置。
直到整个序列有序排列。
代码
#include<iostream>#include<cstdio>using namespace std;void print(int a[],int n,int i){ cout<<"第"<<i+1<<"趟:"; for(int j=0;j<8;j++) cout<<a[j]<<" "; cout<<endl; return;}int SelectMinKey(int a[],int n,int i){ int k=i; for(int j=i+1;j<n;j++) { if(a[k]>a[j]) k=j; } return k;}void SelectSort(int a[],int n){ int key,temp; for(int i=0;i<n;i++) { //选择最小的元素 key=SelectMinKey(a,n,i); if(key!=i) { temp=a[i]; a[i]=a[key]; a[key]=temp; } print(a,n,i); } return;}int main(){ int a[8]={6,5,4,7,3,4,2,3}; cout<<"初始值: "; for(int i=0;i<8;i++) cout<<a[i]<<" "; cout<<endl<<endl; SelectSort(a,8); print(a,8,8); system("pause"); return 0;}
遇到的问题
选择排序是不稳定的排序方法。
阅读全文
0 0
- 算法学习之旅,中级篇(1)-–选择排序
- 算法学习之旅,中级篇(2)-–插入排序
- 算法学习之旅,中级篇(3)-–冒泡排序
- 算法学习之旅,中级篇(4)-–快速排序
- 算法学习之旅,中级篇(8)-–分治之二分搜索(递归)
- 算法学习之旅,中级篇(5)-–递归之杨辉三角
- 算法学习之旅,中级篇(6)-–递归之斐波拉契数列
- 算法学习之旅,中级篇(7)-–递归之汉诺塔
- 排序算法-中级篇(归并排序)
- 排序算法-中级篇
- 算法学习之排序算法:选择排序
- 算法学习之选择排序
- 算法学习之选择排序
- 算法学习之排序——选择排序(Java)
- 经典算法学习:排序之选择排序
- 算法学习之排序(3)--选择排序
- [学习笔记]排序算法之选择排序
- 算法学习笔记--排序之选择排序
- 文件解析漏洞总结-IIS
- 解决 deployment is out of dete due to changes in the underlying project contents youll need to
- 比赛心得
- 指针学习
- hdu2846
- 算法学习之旅,中级篇(1)-–选择排序
- NBUT
- Android开发:关于OpenCV人脸识别的相关代码编写
- shell脚本备忘
- MapReduce数据倾斜解决方案2-- 自定义分区类---二次作业
- Androidthings -- 智能家居freestyle
- 爬虫实例:爬取一个网页上的图片地址
- 训练总结 8.18
- Heartbeat+lvs+ldirectord