C语言冒泡排序(升序)
什么是冒泡排序:
冒泡排序就是将一组数据进行排序,首先是从相邻的两个元素比较,大的值放在后面,依次往后操作找出最大值,并放在最后一位。
这里我们举例
arr[10] = { 9,5,4,3,2,1,0,6,7,,8 };
如第一个元素9依次比较会跑到最后一个位子
在从头开始第二大的元素将跑到倒数第二个位置
让后反复循环,进行排序。
简单的冒泡排序:
#include<stdio.h>
int main()
{int arr[10] = { 9,5,4,3,2,1,0,6,7,8 };int cz = sizeof(arr) / sizeof(arr[0]);int tmp = 0;int i = 0, j = 0;for ( i = 0; i < cz-1 ; i++)//大的比较{for ( j = 0; j < cz - i - 1 ; j++)//小的比较{if (arr[j] > arr[j + 1]){tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;}}}for (int i = 0; i < cz; i++)printf("%d ", arr[i]);return 0;
}
冒泡排序改进1:
我们发现如果在某一次小的比较后,已经完全成为有序数组,我们就不必再进行下一次大的比较,直接退出循环即可。
#include<stdio.h>
int main()
{int arr[10] = { 9,5,4,3,2,1,0,6,7,8 };int cz = sizeof(arr) / sizeof(arr[0]);int tmp = 0;int i = 0, j = 0;int m = 1;for ( i = 0; i < cz-1 ; i++)//大的比较{m = 1;for ( j = 0; j < cz - i - 1 ; j++)//小的比较{if (arr[j] > arr[j + 1]){tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;m = 0;}}if (m){break;}}for (int i = 0; i < cz; i++)printf("%d ", arr[i]);return 0;
}
改进2:
我们发现在进行第一次大的比较后,
arr[10] = { 5,4,3,2,1,0,6,7,8,9 };
数组的后半部分已经有序,我们可以跳过他们。
逃过方法:记录最后改变位置的坐标,并让j<这个坐标即可
#define _CRT_SECURE_NO_WARNINGS 1
//改为升序
#include<stdio.h>
int main()
{int arr[10] = { 9,5,4,3,2,0,1,6,7,8 };int cz = sizeof(arr) / sizeof(arr[0]);int tmp = 0;int i = 0, j = 0;int m = 1;int last_change = cz;for ( i = 0; i < cz-1 ; i++)//大的比较{m = 1;for ( j = 0; (j < cz - i - 1) && ( j < last_change) ; j++)//小的比较{if (arr[j] > arr[j + 1]){tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp; m =0; }} last_change = j + 1;if (m){break;}}for (int i = 0; i < cz; i++)printf("%d ", arr[i]);return 0;
}
C语言冒泡排序(升序)相关推荐
- 冒泡排序c java c,冒泡排序,c语言冒泡排序法代码
冒泡排序,c语言冒泡排序法代码 冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小.首字 ...
- c语言冒泡排序(解析)
c语言冒泡排序(解析) 运行结果:
- C语言——冒泡排序法
C语言--冒泡排序法 问题描述: 1, 3, 2, 6, 4, 5, 9, 8, 10, 7进行从小到大排序 代码: # include <stdio.h>int main() {int ...
- C语言冒泡排序(起泡法)
C语言冒泡排序(起泡法) 冒泡法排序是C语言中较简单的 排序算法 的 . 定义:它重复地走访过要排序的元素列,依次比较两个相邻的元素,让较大的元素逐渐往后移动(交换两个元素的值),直到数组的末尾.如此 ...
- c语言冒泡排序法代码(c语言冒泡排序法代码讲解)
求一个C语言冒泡排序法的简单程序怎么办? 下一趟排序开始时,R[1..lastExchange-1]是有序区,R[lastExchange..n]是无序区.这样,一趟排序可能使当前有序区扩充多个记录, ...
- C语言 | 数组升序排列(冒泡排序法)
数组升序排列 #include<stdio.h> int main() {int a[1000];int i,j,n,t,k=0;scanf("%d",&n); ...
- 10个数冒泡排序流程图_C语言 | 冒泡排序
"要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人-万中无一" --包租婆这道理放在C语言学习上也一并受用.在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语 ...
- go语言 冒泡排序原理
一.概述 go语言中的冒泡排序和java中的冒泡排序的原理一样,如果你懂得java的冒泡排序,那么go只是换了一种写法而已.冒泡,简而言之,就是相邻的两个数据进行比较,进行移位,向冒泡一样.例如一个集 ...
- c语言冒泡排序法程序填空_【C语言】两种方式实现冒泡排序算法
题目要求 编写一个C语言程序,实现基本的冒泡排序算法. 算法 冒泡排序,用一句话来总结: 一组数中,相邻的两个数进行比较.交换,将最大(小)数交换至尾(首)部,即完成了一次冒泡排序 要想对N个数字进行 ...
- c语言数据交换的算法流程图,C语言冒泡排序算法浅析
C语言泡排冒序算浅析 法中刘旭 ( 江师范丽等专高学科校数与计算机学科学系 ) [ 摘]要泡冒排序算法 C语言常见是排序算法之,一该算法的优点 逻辑是清晰,代码简洁,点缺是时复杂度间高较本文介.绍了统 ...
最新文章
- csr_matrix矩阵用法小结
- Mac-使用技巧之快速新建txt文本
- 【数字信号处理】傅里叶变换性质 ( 傅里叶变换时移性质示例 )
- HDU1011 Starship Troopers(树形dp)
- 为什么8位数据范围是-128到127,而不是-127到128?
- python 抢购口罩_Python 京东口罩监控+抢购
- DIV或者DIV里面的图片水平与垂直居中的方法 - 站住,别跑 - 博客园
- php处理ajax post请求超时,php – 如何处理AJAX请求中的会话超时
- IS-IS详解(五)——IS-IS 三次握手与两次握手
- 短视频仿抖音源码--探索短视频+时代
- Python基础+数据科学入门(四)程序控制结构
- three.js顶点篇
- 春节流量争夺战:互联网巨头跪求你收红包
- SDL开发笔记(三):使用SDL渲染窗口颜色和图片
- 送福利 手把手教你快速配置腾讯云 Linux 服务器
- 计算机应用用蒙语怎么写,100句常用蒙古语 - 百度文库
- 实战QT数据采集与显示
- 国内8大热门android论坛
- 【前端多宫格卡片自适应,再也不怕多宫格布局啦】
- 初入红尘——在安联IT实习的一点感受(未完......)
热门文章
- 基于DWM1000模块开发UWB系统进行室内定位
- rdkit 计算环、芳香环数
- spleetergui2.9汉化版下载 | SpleeterGui(音轨分离软件)官方中文版V2.9.1 | 人声分离软件下载
- 《关于动态社交网络建模和分析的教程》的读书笔记
- Android Studio 统计代码行数插件 — Statistic 申请软著写源程序量
- 没有GPS模块无人机无法解锁解决方法测试及其他无法解锁APM疑难杂症
- 【观察】 全新紫光云:“云数智”底盘再升级,背后的三重新价值
- SPPnet论文总结
- XP仿Windows7主题包 不占内存的。
- 石光荣,黑客帝国,社会化网络----社会化网络能否平衡抽象主导的现代生活? (发表于程序员第一期)