博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单排序:冒泡、选择、插入
阅读量:6520 次
发布时间:2019-06-24

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

1,冒泡排序。

冒泡排序的原理很形象,就像是气泡,轻的往上浮的过程,直到气泡都按轻重排列。

那么算法中,如果我们用数组来存放元素,要对数组的每个元素进行向上冒泡。

a,伪冒泡排序

void Bubble(int *data,int length){  for(int i=0;i
=0;j--)//每个元素与上一个元素进行对比 { if(data[i]

为什么说是伪冒泡呢?请注意第二个循环 for(int j=length-1;j>0;j--),

如果是第一趟,冒泡到最上层;

如果是第二趟,按道理最上层就不需要冒泡了,因为第一冒泡的时候最上层的已经是最小了。

……

所以我们需要改变我们的代码:

b,冒泡排序

void Bubble(int *data,int length){  for(int i=0;i
=i;j--)//冒过泡的就代表有序了,所以不需要继续冒泡了 { if(data[i]

那么是否有改进的地方呢?考虑一个问题,当冒泡的时候上一趟冒泡如果没有交换数据,说明数据已经有序了,那么对下一趟排序就没有必要了。

C,优化的冒泡排序

void Bubble(int *data,int length){    bool flag=true;  for(int i=0;i
=i;j--)//冒过泡的就代表有序了,所以不需要继续冒泡了 { if(data[i]

2,选择排序。

选择排序是指依次把最小的元素找出来的一种方法。

void selectSort(int *data,int length){	int min;	for (int i=0;i
data[j])//每趟都找出最小数,放在i处 { min=j; } } if (min!=i)//如果相同则i处最小 { int temp=data[i]; data[i]=data[min]; data[min]=temp; } }}

3,插入排序。

插入排序是指对已经有序的序列插入一个新元素后,对序列进行排序,序列增加1。重复这个过程,直到序列都有序。

void insertSort(int *data,int length){	//插入排序的思想是,对已经有序的序列插入一个新的元素,使得新序列增加1	//首先列表为第一元素。	for(int i=1;i
data[i]) { int temp=data[i]; int j; for (j=i-1;data[j]>temp;j--)//对有序列表内进行插入 { data[j+1]=data[j];//元素后移动 } data[j+1]=temp;//插入元素 } }}

总结,这三种排序的时间复杂度都是O(n*n),效率也依次递增。

 

转载于:https://www.cnblogs.com/273809717/archive/2012/12/27/2835126.html

你可能感兴趣的文章
Cobbler简介
查看>>
恢复 git reset -hard 的误操作
查看>>
C# WinForm 文件上传下载
查看>>
【javascript】ajax请求 编码问题导致的ie浏览器在输入中文文字后没有内容,而chrome正常搜到文字...
查看>>
Git分支操作
查看>>
Spring Integration概述
查看>>
[SAP ABAP开发技术总结]权限对象检查
查看>>
RDIFramework.NET ━ 9.6 模块(菜单)管理 ━ Web部分
查看>>
Android安全问题 静音拍照与被拍
查看>>
cocos2d-x 3.1.1 学习笔记[13] listen 监听器
查看>>
定制私人博客
查看>>
WTL介绍
查看>>
应用程序框架实战三十四:数据传输对象(DTO)介绍及各类型实体比较(转)
查看>>
放量滞涨,抛出信号
查看>>
BeanFactory not initialized or already closed - call 'refresh' before accessing beans解决办法
查看>>
dSYM 文件分析工具
查看>>
R语言合并data.frame
查看>>
linux主机下的Vmware Workstation配置NAT设置 端口映射-Ubuntu为例
查看>>
unity physics joint
查看>>
TD的访问地址
查看>>