优化后的排序冒泡排序算法.c
来源:互联网 发布:半自动咖啡机推荐 知乎 编辑:程序博客网 时间:2024/06/05 14:52
#include#include #define MAX 30int main(void){int i, j = 0, k = 0, min, sign, tag = 1;/*优化一、定义一个tag检查每次内层循环是否交换了数据情况1: 交换了数据说明此时数组仍处于无序状态,tag = 0;情况2:未交换数据说明此时数据已经有序, tag = 1不需要继续进行接下来的循环了 break; 跳出循环优化二、每次一冒泡进行遍历数组,只是冒上去了你想要的最大值或者最小值思考优化:每次带上去一个最大值或最小值,那么就可以,带回来最小 值或者最大值,那么排序所花费的时间就会减少一半。*/int array[MAX];printf("\n*************************************************************\n");printf("未排序的数组:");for (i = 0; i < MAX; i++)//给数组赋初值 并 打印出来{array[i] = (rand() % 100);//rand()函数包含在stdlib.h函数库中,功能是返回一个随机值printf("%4d", array[i]);}printf("\n*************************************************************\n");printf("\n\n\n*************************************************************\n");for (i = MAX - 1; i > 0; i--){sign = k;//初始化标记位置tag = 1;//每次交换数据前需要初始化min = array[k];//中间无序序的是最小值for (j = k; j < i; j++){if (array[j] > array[j + 1])//如果 array[j] 大于 array[j + 1]交换值,大的数字'冒'到了数组的后面去{int tmp;tmp = array[j];array[j] = array[j + 1];array[j + 1] = tmp;tag = 0;//交换数据,tag赋值为0}if (array[j] < min){min = array[j];//更新最小值sign = j;//记录最小值的位置}}if (tag == 1)//未交换数据直接退出{break;}//交换找到的最小值和未排序的首元素的值//此处建议使用定义一个临时变量交换数值,如果当k == sign 时,就会出错{int tmp;tmp = array[k];array[k] = array[sign];array[sign] = tmp;}k++;}printf("排序后的数组:");for (i = 0; i < MAX; i++){printf("%4d",array[i]);}printf("\n*************************************************************\n");system("pause");return 0;}
阅读全文
0 0
- 优化后的排序冒泡排序算法.c
- BubbleSort 优化后的冒泡排序算法
- 未优化的冒泡排序算法.c
- C 冒泡排序 冒泡排序的优化
- 优化后的冒泡排序
- 优化后的冒泡排序
- 优化后的冒泡排序
- 选择排序和 标准冒泡排序算法 (简单优化后的冒泡排序)
- C--经典算法之排序---优化过的冒泡排序
- 冒泡排序算法的优化
- 冒泡排序的优化算法
- 优化冒泡排序算法
- 【C#】[算法]冒泡排序
- C算法-冒泡排序
- 【C】冒泡排序算法
- 冒泡排序算法的两种优化
- 排序算法——冒泡的优化
- 优化的冒泡排序C代码
- 展讯平台android display驱动分析
- java注解
- 使用BottomTabBar实现底部导航,MVP网络框架,retrofit解析
- 洛谷 [P1403] 约数研究
- 在debian9上安装citrix receiver登录citrix虚拟桌面
- 优化后的排序冒泡排序算法.c
- 第一篇
- 实现基于LNMP的电子商务网站
- 关于串口通信波特率的几点思考
- Angular4学习笔记(七)- ViewChild和ViewChildren
- Rxjava2
- VxWorks_使用ftp服务
- 线段树--codeforces242E XOR on Segment
- Python之join函数