冒泡优化和扩展

简介: 冒泡优化和扩展

前言

冒泡排序

优化提高效率

解析都在注释里面了


void bubble_sort(int arr[], int sz)//参数接收数组元素个数
{
  int i = 0;
  for(i=0; i<sz-1; i++){
    int flag = 1;//假设这⼀趟已经有序了
    int j = 0;
    for(j=0; j<sz-i-1; j++){
    if(arr[j] > arr[j+1]){
      flag = 0;//发⽣交换就说明,⽆序
      int tmp = arr[j];
      arr[j] = arr[j+1];
      arr[j+1] = tmp;
    }
    }
  if(flag == 1)//这⼀趟没交换就说明已经有序,后续⽆序排序了
    break;
  }
}
int main()
{
  int arr[] = {3,1,7,5,8,9,0,2,4,6};
  int sz = sizeof(arr)/sizeof(arr[0]);
  bubble_sort(arr, sz);
  for(i=0; i<sz; i++){
    printf("%d ", arr[i]);
  }
 return 0;
}



扩展同样提高效率,也可以用指针来做,思路清晰

af05fdbc3e774ac09af6cf7c432ee912.png

输出结果:

4ca22567bff74b92a68447d7d8acf169.png

相关文章
|
存储 对象存储
oss区分存储怎么把图片压缩后再上传?
oss区分存储怎么把图片压缩后再上传?
1074 0
|
JavaScript 前端开发 UED
(详解错误情况,及解决方法)Vue 数据更新了但页面没有更新的情况
(详解错误情况,及解决方法)Vue 数据更新了但页面没有更新的情况
643 0
|
11月前
|
存储 Prometheus NoSQL
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
139 3
|
JSON 人工智能 自然语言处理
|
Java
notify () 和 notifyAll () 的区别
notify () 和 notifyAll () 的区别
299 0
|
Java 应用服务中间件 Apache
Java Web入门之开发环境的搭建(包括下载Tomcat和 Eclipse for Java EE)
Java Web入门之开发环境的搭建(包括下载Tomcat和 Eclipse for Java EE)
327 0
Java Web入门之开发环境的搭建(包括下载Tomcat和 Eclipse for Java EE)
|
JSON JavaScript 前端开发
JSON的使用之灵活版
JSON的使用之灵活版
221 0
|
消息中间件 负载均衡 RocketMQ
五分钟带你玩转rocketMQ(九)push与pull模式如何选择是个难题
对于任何一款消息中间件而言,消费者客户端一般有两种方式从消息中间件获取消息并消费。严格意义上来讲,RocketMQ并没有实现PUSH模式,而是对拉模式进行一层包装,名字虽然是 Push 开头,实际在实现时,使用 Pull 方式实现。通过 Pull 不断不断不断轮询 Broker 获取消息。当不存在新消息时,Broker 会挂起请求,直到有新消息产生,取消挂起,返回新消息。这样,基本和 Broker 主动 Push 做到接近的实时性(当然,还是有相应的实时性损失)。原理类似 长轮询( Long-Polling )
3218 0
五分钟带你玩转rocketMQ(九)push与pull模式如何选择是个难题
|
数据采集 存储 机器学习/深度学习
数据太多、太乱、太杂?你需要这样一套数据治理流程
数据作为机器学习的基础,从 GB、TB 到 PB 已经增长了无数倍,现在大一点的业务场景,没有 TB 级数据都提供不了高效的体验。那么数据怎么治理才好,怎样与模型、算力结合才算妙?在本文中,我们将看看什么是 HAO 数据治理模型,看看公安数据到底是如何规范处理的。
414 0
数据太多、太乱、太杂?你需要这样一套数据治理流程