选择排序
来源:互联网 发布:c语言写网络爬虫 编辑:程序博客网 时间:2024/06/06 04:49
选择排序
首先列出选择排序的思路:
首先第一次要从数组中发现其中的最小值和最小值的位置。(此处重要的为最小值的位置)
即:Find_Min_Sit函数:
int Find_Min_Sit(int i){// int Min_Num=1000000,Min_Sit = 0; for (int j=i; j<Lenth; j++) { if (a[j]<Min_Num) { Min_Num=a[j]; Min_Sit=j; } } return Min_Sit;}
PS:如果想提高排序速度,可以在其中加入一个判断值,来判断是否已经完全排序成功,如果排序成功,直接使用Min_Sit返回一个非法位置就可以。
然后从 i 次循环中发现,发现数组中第 i 小的数,使其与第 i 位数进行交换
即:Select_Sort函数:
void Select_Sort(void){ int Min_sit = 0;//最小值的位置 for (int i=0; i<Lenth-1; i++) { Min_sit = Find_Min_Sit(i); swap(a[i], a[Min_sit]); Show_Arr();
然后就完成了操作。
此处为完整代码:
//// main.cpp// 选择排序-1//// Created by MaLker on 2017/3/19.// Copyright © 2017年 MaLker. All rights reserved.//#include <iostream>#include <algorithm>#define Max_Size 100using namespace std;int a[Max_Size],Lenth;void Show_Arr(void);void Creat_Arr(void){//创造一个新数组 scanf("%d",&Lenth); for (int i=0; i<Lenth; i++) { scanf("%d",&a[i]); }}/*********************************///框中的内容实际为选择排序int Find_Min_Sit(int i){// int Min_Num=1000000,Min_Sit = 0; for (int j=i; j<Lenth; j++) { if (a[j]<Min_Num) { Min_Num=a[j]; Min_Sit=j; } } return Min_Sit;}void Select_Sort(void){ int Min_sit = 0;//最小值的位置 for (int i=0; i<Lenth-1; i++) { Min_sit = Find_Min_Sit(i); swap(a[i], a[Min_sit]); Show_Arr(); }}/***********************************/void Show_Arr(void){//展示一次数组的内容 for (int i=0; i<Lenth; i++) { printf("%-5d",a[i]); } printf("\n");}int main(int argc, const char * argv[]) { Creat_Arr(); Select_Sort(); return 0;}
0 0
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序:
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- java中的udp
- java中的Iterator和Iterable 区别
- linux 内核笔记--中断子系统之softirq
- linux文件系统详解
- Java基础知识_day02_(键盘录入,运算符)
- 选择排序
- rman恢复数据库一
- 用sprintf,scanf实现数字与字符串的转换
- Linux操作系统
- 字符串全排列之递归算法
- 自我总结:sql中一次插入多条数据的写法
- [LeetCode] Different Ways to Add Parentheses 加括号的不同方式
- 被老大支配的恐惧
- Python字符串