比较冒泡排序和选择排序
来源:互联网 发布:全国软件开发考试报名 编辑:程序博客网 时间:2024/05/22 01:43
冒泡排序:
#include <iostream>using namespace std;int main(){int a[1000];int n = 0;cout << "输入任意字母开始排序" << endl;while (cin >> a[n]){n++;}int i, j;int temp;for(i = 0; i < n - 1; i++){for(j = 0; j < n - 1 - i; j++){if(a[j] > a[j + 1]){temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;}}}for(i = 0; i < n; i++){cout << a[i] << " ";}cout << endl;system("pause");return 0;}这个冒泡排序是从小到大排的, 如果每次前一个数都比后一个数大, 那么就得把这两个数交换一次,每次交换都得浪费时间和内存,这样效率不是很高。
选择排序:
#include <iostream>using namespace std;int main(){int a[1000];int n = 0;cout << "输入任意字母开始排序" << endl;while (cin >> a[n]){n++;}int i, j, p;//p用来记录每轮循环中最小数的下标int temp;for(i = 0; i < n - 1; i++){p = i;for(j = i + 1; j < n; j++){if(a[p] > a[j])//如果有比a[p]更小的数就把其下标赋给p;p = j;}if(i != p)//如果p和最开始的i不一样就交换这两个值,否则不交换;{temp = a[p];a[p] = a[i];a[i] = temp;}}for(i = 0; i < n ;i++)cout << a[i] << " ";cout << endl;system("pause");return 0;}这个排序也是从小到大排序的,注意 p 是用来记录每轮循环中最小数的下标,在内层循环中不进行交换,只是找到最小的数,找到之后就比较这个数的下标是不是和 i 一样,如果不一样就将这两个数交换。
冒泡和选择的区别:
冒泡排序是在内层循环中进行交换的,这样交换的次数是比较多的,如果数据不好那么每轮循环都得交换n - i - 1 次,然后外层还得循环,这样的效率是很低的
选择排序是在外层循环中进行交换的,就算每次都要交换数据,那么一共也只要交换n - 1 次,这样效率就会提高很多。
还有其他的排序算法以后再学习,之后再把这些排序全部总结一下。
阅读全文
0 0
- 选择排序和冒泡排序的比较
- 比较冒泡排序和选择排序
- 选择、插入、冒泡排序实现和比较
- c#中选择排序和冒泡排序比较
- 冒泡排序和选择排序
- 选择排序和冒泡排序
- 选择排序和冒泡排序
- 冒泡排序和选择排序
- 选择排序和冒泡排序
- 选择排序和冒泡排序
- 冒泡排序和选择排序
- 选择排序和冒泡排序
- 冒泡排序和选择排序
- 选择排序和冒泡排序
- 冒泡排序和选择排序
- 选择排序和冒泡排序
- 选择排序和冒泡排序
- 冒泡排序 和 选择排序
- 提高JavaScript性能④
- OpenCV实践之路——人脸检测(C++/Python)
- 【Spring Boot 栏目】
- C语言题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
- 模板模式
- 比较冒泡排序和选择排序
- 除十磨十
- python 全排列 递归中的两种实现
- CSND太垃圾了了吧
- 简单电路实践——电路与二进制运算
- new对象与Spring对bean的初始化的差别
- 自动化报警的思路
- 极大似然估计
- day-14