小朋友学数据结构(12):冒泡排序
咱们在学C语言的时候,学过冒泡排序,请参考《小朋友学C语言(26):冒泡排序》:https://www.songma.com/p/587ff823ba5b
《大话数据结构》第九章,讲了一种优化的冒泡排序,完整代码如下:
#include<iostream>using namespace std;#define MAX 5typedef struct{ int r[MAX + 1]; int len;}seq;void myswap(seq *x, int i, int j){ int temp = x->r[i]; x->r[i] = x->r[j]; x->r[j] = temp;}void bubbleSort(seq *x){ bool flag = true; // i表示第几轮比较,不表示数组下标 for (int i = 1; i < x->len && flag; i++) { cout << "第" << i << "轮排序:"; flag = false; // j表示数组下标,这里是从后往前比较,能同时挪动多个,提高了效率 // 比方,{3, 2, 1, 5, 4}经过一轮比较变成{1, 3, 2, 4, 5} for (int j = x->len - 1; j >= i; j--) { if (x->r[j] > x->r[j + 1]) { myswap(x, j, j + 1); flag = true; } } for(int i = 1; i <= x->len; i++) { cout << x->r[i] << ' '; } cout << endl; }}int main(){ cout << "输入数据:"; seq s; for(int i = 1; i <= MAX; i++) { cin >> s.r[i]; } s.len = MAX; bubbleSort(&s); cout << "排序结果:"; for(int i = 1; i <= s.len; i++) { cout << s.r[i] << ' '; } cout << endl; return 0;}运行结果:
输入数据:3 2 1 5 4第1轮排序:1 3 2 4 5第2轮排序:1 2 3 4 5第3轮排序:1 2 3 4 5排序结果:1 2 3 4 5加入少儿信息学奥赛QQ群请扫左侧二维码,关注微信公众号请扫右侧二维码
QQ群和公众号.png
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 小朋友学数据结构(12):冒泡排序
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 小朋友学数据结构(12):冒泡排序
QQ群和公众号.png