冒泡排序

冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地 进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
冒泡排序的算法实现如下:【排序后,数组从小到大排列】
/**
* 冒泡排序
* 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
* 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
* 针对所有的元素重复以上的步骤,除了最后一个。
* 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
* @param numbers 需要排序的整型数组
*/
public static void bubbleSort(int[] numbers)
{
int temp = 0;
int size = numbers.length;
for(int i = 0 ; i < size-1; i ++)
{
for(int j = 0 ;j < size-1-i ; j++)
{
if(numbers[j] > numbers[j+1]) //交换两数位置
{
temp = numbers[j];
numbers[j] = numbers[j+1];
numbers[j+1] = temp;
}
}
}
}
快速排序
快速排序的基本思想:
通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,则分别对这两部分继续进行排序,直到整个序列有序。
把整个序列看做一个数组,把第零个位置看做中轴,和最后一个比,如果比它小交换,比它大不做任何处理;交换了以后再和小的那端比,比它小不交换,比他大交换。这样循环往复,一趟排序完成,左边就是比中轴小的,右边就是比中轴大的,然后再用分治法,分别对这两个独立的数组进行排序。
代码实现如下:
1.查找中轴(最低位作为中轴)所在位置
/**
* 查找出中轴(默认是最低位low)的在numbers数组排序后所在位置
*
* @param numbers 带查找数组
* @param low 开始位置
* @param high 结束位置
* @return 中轴所在位置
*/
public static int getMiddle(int[] numbers, int low,int high)
{
int temp = numbers[low]; //数组的第一个作为中轴
while(low < high)
{
while(low < high && numbers[high] > temp)
{
high--;
}
numbers[low] = numbers[high];//比中轴小的记录移到低端
while(low < high && numbers[low] < temp)
{
low++;
}
numbers[high] = numbers[low] ; //比中轴大的记录移到高端
}
numbers[low] = temp ; //中轴记录到尾
return low ; // 返回中轴的位置
}
2、 递归形式的分治排序算法:
/**
*
* @param numbers 带排序数组
* @param low 开始位置
* @param high 结束位置
*/
public static void quickSort(int[] numbers,int low,int high)
{
if(low < high)
{
int middle = getMiddle(numbers,low,high); //将numbers数组进行一分为二
quickSort(numbers, low, middle-1); //对低字段表进行递归排序
quickSort(numbers, middle+1, high); //对高字段表进行递归排序
}
}
3、快速排序提供方法调用
/**
* 快速排序
* @param numbers 带排序数组
*/
public static void quick(int[] numbers)
{
if(numbers.length > 0) //查看数组是否为空
{
quickSort(numbers, 0, numbers.length-1);
}
}
分析:
快速排序是通常被认为在同数量级(O(nlog2n))的排序方法中平均性能最好的。但若初始序列按关键码有序或基本有序时,快排序反而蜕化为冒泡排序。为改进之,通常以“三者取中法”来选取基准记录,即将排序区间的两个端点与中点三个记录关键码居中的调整为支点记录。快速排序是一个不稳定的排序方法。
方法测试
打印函数:
public static void printArr(int[] numbers)
{
for(int i = 0 ; i < numbers.length ; i ++ )
{
System.out.print(numbers[i] + ",");
}
System.out.println("");
}
测试:
public static void main(String[] args)
{
int[] numbers = {10,20,15,0,6,7,2,1,-5,55};
System.out.print("排序前:");
printArr(numbers);
bubbleSort(numbers);
System.out.print("冒泡排序后:");
printArr(numbers);
quick(numbers);
System.out.print("快速排序后:");
printArr(numbers);
}
结果:
排序前:10,20,15,0,6,7,2,1,-5,55,
冒泡排序后:-5,0,1,2,6,7,10,15,20,55,
快速排序后:-5,0,1,2,6,7,10,15,20,55,
以上所述是小编给大家介绍的Java 冒泡排序、快速排序实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# java
# 冒泡排序
# 快速排序
# Java编程基于快速排序的三个算法题实例代码
# Java基于分治法实现的快速排序算法示例
# Java编程实现快速排序及优化代码详解
# java简单快速排序实例解析
# java 算法之快速排序实现代码
# JAVA一个快速排序实现代码
# 图文讲解Java中实现quickSort快速排序算法的方法
# Java编程中快速排序算法的实现及相关算法优化
# 详解Java中使用泛型实现快速排序算法的方法
# 详解Java双轴快速排序算法
# 递归
# 第一个
# 移到
# 两部分
# 小编
# 是一个
# 他们的
# 是一种
# 是因为
# 最好的
# 在这
# 在此
# 循环往复
# 没有任何
# 这两个
# 就把
# 第二个
# 给大家
# 换了
# 不做
相关文章:
建站之星安装提示数据库无法连接如何解决?
香港网站服务器数量如何影响SEO优化效果?
如何在七牛云存储上搭建网站并设置自定义域名?
个人网站制作流程图片大全,个人网站如何注销?
如何在腾讯云服务器快速搭建个人网站?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
沈阳制作网站公司排名,沈阳装饰协会官方网站?
已有域名如何免费搭建网站?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
建站主机CVM配置优化、SEO策略与性能提升指南
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
利用JavaScript实现拖拽改变元素大小
如何快速搭建FTP站点实现文件共享?
制作网站怎么制作,*游戏网站怎么搭建?
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
做企业网站制作流程,企业网站制作基本流程有哪些?
微网站制作教程,我微信里的网站怎么才能复制到浏览器里?
如何使用Golang安装API文档生成工具_快速生成接口文档
建站之星代理费用多少?最新价格详情介绍
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
PHP正则匹配日期和时间(时间戳转换)的实例代码
高防服务器租用首荐平台,企业级优惠套餐快速部署
如何快速搭建虚拟主机网站?新手必看指南
linux top下的 minerd 木马清除方法
香港服务器网站推广:SEO优化与外贸独立站搭建策略
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
高端建站三要素:定制模板、企业官网与响应式设计优化
建站之星展会模版如何一键下载生成?
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
如何在橙子建站中快速调整背景颜色?
如何在Windows 2008云服务器安全搭建网站?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何通过老薛主机一键快速建站?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
宝塔新建站点报错如何解决?
建站之星如何保障用户数据免受黑客入侵?
如何快速查询网站的真实建站时间?
如何在建站宝盒中设置产品搜索功能?
免费视频制作网站,更新又快又好的免费电影网站?
如何在景安服务器上快速搭建个人网站?
动图在线制作网站有哪些,滑动动图图集怎么做?
学校建站服务器如何选型才能满足性能需求?
如何选择高效稳定的ISP建站解决方案?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
建站VPS配置与SEO优化指南:关键词排名提升策略
视频网站制作教程,怎么样制作优酷网的小视频?
c# Task.ConfigureAwait(true) 在什么场景下是必须的
*请认真填写需求信息,我们会在24小时内与您取得联系。