博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
排序算法之——冒泡排序
阅读量:4095 次
发布时间:2019-05-25

本文共 804 字,大约阅读时间需要 2 分钟。

按照约定的排序顺序,两两比较相邻的数据,如果反序则交换,直到没有反序记录为止

比较次数:比较(n-1)* n / 2 次
交换次数:最坏时交换,没比较完一次就要交换一次,交换(n-1) * n / 2 次

C语言实现

void bubblesort(int arr[], int n){	int i, j, temp = 0;	for(i = 0; i < n; i++)	{		for(j = 0; j < n - i -1; j++)		{			if(arr[j] > arr[j + 1])	//两两比较相邻数据,反序则交换			{				temp = arr[j];				arr[j] = arr[j + 1];				arr[j + 1] = temp;			}		}	}	return;}

冒泡排序改进版:设置一个标签flag,进行一轮比较前,先默认数据是有序的,如果中间有数据交换,则将flag设置成无序,进行下一轮比较,如果一轮比较完,flag仍是有序,则退出排序

void bubblesort(int arr[], int n){	int i, j, temp = 0;	int flag;		for(i = 0; i < n; i++)	{		flag = 1;	//假设数据是有序的		for(j = 0; j < n - i -1; j++)		{			if(arr[j] > arr[j + 1])//两两比较相邻数据,反序则交换			{				temp = arr[j];				arr[j] = arr[j + 1];				arr[j + 1] = temp;				flag = 0;//一旦有数据交换,就设置flag			}		}		if(flag == 1)//如果一轮比较下来没有发生数据交换,则数据是有序的,不需要再排序了			break;	}	return;}

转载地址:http://fboii.baihongyu.com/

你可能感兴趣的文章
XML工具代码:SAX从String字符串XML内获取指定节点或属性的值
查看>>
时间日期:获取两个日期相差几天
查看>>
责任链模式 Chain of Responsibility
查看>>
高并发与大数据解决方案概述
查看>>
解决SimpleDateFormat线程安全问题NumberFormatException: multiple points
查看>>
MySQL数据库存储引擎简介
查看>>
处理Maven本地仓库.lastUpdated文件
查看>>
Kafka | 请求是怎么被处理的?
查看>>
Java并发编程1-线程池
查看>>
CentOS7,玩转samba服务,基于身份验证的共享
查看>>
计算机网络-网络协议模型
查看>>
计算机网络-OSI各层概述
查看>>
Java--String/StringBuffer/StringBuilder区别
查看>>
mySQL--深入理解事务隔离级别
查看>>
分布式之redis复习精讲
查看>>
数据结构与算法7-栈
查看>>
线性数据结构学习笔记
查看>>
Java并发编程 | 一不小心就死锁了,怎么办?
查看>>
(python版)《剑指Offer》JZ01:二维数组中的查找
查看>>
(python版)《剑指Offer》JZ06:旋转数组的最小数字
查看>>