C语言:用冒泡排序对数组进行升序排序
冒泡排序:它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行,直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
例:arr[]={4,6,5,1,2,8,9};
4 6 5 1 2 8 9; 4和6进行比较,6比4大则顺序不变,
4 6 5 1 2 8 9; 6和5进行比较,6>5,6与5交换位置
4 5 6 1 2 8 9; 6继续和1比较,6>1,6与1交换位置,同理依次与2比较,继续与2交换位置;
4 5 1 2 6 8 9; 6在与8进行比较,6<8,位置不变,
4 5 1 2 6 8 9; 8和9比较,8 < 9,8与9交换位置,确定9为最大的数,第一轮排序结束。
4 5 1 2 6 8 9; 4与5比较,4<5,位置不变,5与1比较,交换位置,与2比较,交换位置,在与6比较,位置不变,6在与8比较,位置不变,确定8的位置,第二轮排序结束
4 1 2 5 6 8 9;
.........
同理也可确定每个数的位置,
1 2 4 5 6 8 9。
限制条件:一共要进行7轮排序,即为数组元素个数-1;
每一轮排序确定一个元素位置,则每轮排序次数为元素个数-1-确定位置的元素个数。
代码如下:
#include<stdio.h>
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-1-i ; j++){if(arr[ j ] > arr[ j + 1 ]){int tmp = arr[ j ];arr[ j ] = arr[ j +1 ];arr[ j + 1 ] = tmp;flag = 0; //本轮排序的数据不完全有序}}if(flag == 1) {//本轮数据已经有序。break; //跳出整个循环}}}int main()
{int arr[]={4,6,5,1,2,8,9};int i = 0;int sz=sizeof(arr) / sizeof(arr[0]);//计算数组元素个数//对arr进行排序,排成升序//arr是数组,我们对数组arr进行传参,实际上传递过去的是数组arr首元素的地址bubble_sort(arr,sz); //冒泡排序函数for(i = 0;i < sz; i++ ){printf("%d ",arr[i]);}
}
C语言:用冒泡排序对数组进行升序排序相关推荐
- c#给定二维数组按升序排序_在数组中按升序对数字进行排序| 8086微处理器
c#给定二维数组按升序排序 Problem: Write a program in 8086 microprocessor to sort numbers in ascending order in ...
- sort() 对数值数组进行升序排序
实例 对数组 $cars 中的元素按字母进行升序排序: <?php $cars=array("Volvo","BMW","Toyota" ...
- (六)使用C++实现冒泡排序,对数组进行升序排序
指针.数组.函数 案例描述:封装一个函数 void函数,实现冒泡排序? ,对整型数组进行升序排序 #include<iostream> using namespace std; //冒泡排 ...
- php sort函数,php sort 函数对数组进行升序排序
php sort函数对数组进行排序.排序规则是按照数组元素进行升序排序. 基本语法 bool sort(array,sortingtype); 本函数对数组进行排序.当本函数结束时数组单元将被从最低到 ...
- c语言指针和函数对数组A升序排序,函数指针作为函数參数,实现冒泡排序的升序排序和降序排序...
#include #define N 10//定义数组元素个数 int Ascending(int a,int b);//升序排列的函数声明 int Descending(int a,int b);/ ...
- (篇三)C语言的冒泡排序多解、选择排序、数组合并、矩阵相加
文章目录 一.经典冒泡排序与选择排序 二.矩阵相加 三.数组合并 四.卖西瓜问题 C语言是非常锻炼结构化思维的语言,而结构化思维的编程思维非常重要的一点,让我们通过练习C语言实例增强我们的编程思维吧 ...
- 冒泡排序:实现数组元素升序排序
案例:将数组{4,2,8,0,5,7,1,3,9}进行升序排列 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值. 3.重复以 ...
- 通过冒泡排序对一个数组进行升序排序
void bubble_sort(int arr[], int sz) { int i = 0; for (i = 0; i < sz - 1; i++) { ...
- 用c语言编写一个排序函数,c语言 编写一个排序函数,实现对主函数中数组的升序排序....
满意答案 lsdiddepl91 推荐于 2017.05.23 采纳率:48% 等级:10 已帮助:319人 经典的两个排序: (1)选择排序 #include main() { int a[5 ...
最新文章
- 【c语言】蓝桥杯算法提高 3-3求圆面积表面积体积
- 1月26日学习内容整理:reverse函数补充,modelform对象补充,form表单参数补充
- UIControl事件---iOS-Apple苹果官方文档翻译
- 使用adb命令查看Sqlite数据库
- html5 jquery mobile,html5 jquery mobile
- webservice的css哪里添加,jQuery_XML+XSLT+CSS+JQuery+WebService组建Asp.Net网(2), 3. 更 - phpStudy...
- JavaScript 获取 当前日期和三十天以前日期
- RuoYiConfig中加入自定义属性值获取不到解决办法?
- 关于微软企业库中依赖注入容器Unity两种生成对象的实现
- can硬件结构和工作原理_汽车CAN总线工作原理及测量方法详解
- 解析百度Apollo自动驾驶平台
- Elasticsearc 6.x以后不再支持mapping下多个type
- 数字电路专题:常用逻辑门符号
- 思科模拟器交换机配置secret和password
- 【SpringBoot】38 个常用注解
- 判断一个数是不是2的N次方 自己写的土算法
- 30天自制操作系统 (一个操作系统的实现)
- linux终端如何连接wifi,如何在 Linux 终端中连接使用 WiFi?
- OpenFegin(基础)
- 开通财付通境外并将申请到的美国运通卡与paypal账户成功绑定