JAVA四种基本排序总结

JAVA四种基本排序,包括冒泡法,插入法,选择法,SHELL排序法.其中选择法是冒泡法的改进,SHELL排序法是 插入法的改进.所以从根本上来说可以归纳为两种不同的排序方法:即:插入法&冒泡法

一 插入法:遍历排序集合,每到一个元素时,都要将这个元素与所有它之前的元素遍历比较一遍,让符合排序顺序的元素挨个移动到当前范围内它最应该出现的位置。交换是相邻遍历移动,双重循环控制实现.这种排序法属于地头蛇类型,在我的地牌上我要把所有的东西按一定的顺序规整,过来一个,规整一个.
处理代码如下:
public void sort(int[] data) {
int temp;
for(int i=1; i〈data.length; i++){
for(int j=i; (j〉0)&&(data[j]〉data[j-1]); j--){

temp=date[j];
data[j]=data[j-1];
data[j-1]=temp; }
}
}
二冒泡法:比较容易,它的内层循环保证遍历一次后,集合中最小(大)元素出现在它的正确位置,下一次就是次小元素。。。该方法在集合分布的各种情况下交换移动的次数基本不变,属于最慢的一种排序。实现也是双重循环控制。这种排序法属于过江龙,就是要找到极端,但是过奖龙也有大哥,二哥等,所以他们只能是大哥挑了二哥挑.
处理代码如下:
public static int [] maopao(int[] data) {
int temp;
for(int i=0; i〈data.length-1; i++){
for(int j=i+1; j〈data.length; j++){
if(data[i]〈data[j]){
temp=data[i];
data[i]=data[j];
data[j]=temp;
}
}
}

return data;

三选择法:该方法只是通过遍历集合记录最小(大)元素的位置,一次遍历完后,再进行交换位置操作,类似冒泡,但在比较过程中,不进行交换操作,只记录元素位置。一次遍历只进行一次交换操作。这个对与交换次序比较费时的元素比较适合。这种排序法比冒泡法要城府要深的多,我先记住极端数据,待遍历数据完了之后,我再处理,不像冒泡法那样只要比自己极端一点的就要处理,选择法只处理本身范围内的最极端数据.
public static void xuanze(int[] data) {
int temp;
for (int i = 0; i 〈 data.length; i++) {
int lowIndex = i;
for (int j = data.length - 1; j 〉 i; j--) {
if (data[j] 〉 data[lowIndex]) {
lowIndex = j;
}
}
temp=data[i];
data[i]=data[lowIndex];
data[lowIndex]=temp;
}
}
四 Shell排序:
它是对插入排序的一种改进,是考虑将集合元素按照一定的基数划分成组去排序,让每一组在局部范围内先排成基本有序,最后在进行一次所有元素的插入排序。
public void sort(int[] data) {
for(int i=data.length/2; i〉2; i/=2){
for(int j=0; j〈i; j++){
insertSort(data,j,i);
}
}
insertSort(data,0,1);
}

private void insertSort(int[] data, int start, int inc) {
int temp;
for(int i=start+inc; i〈data.length; i+=inc){
for(int j=i; (j〉=inc)&&(data[j]〈data[j-inc]); j-=inc){
temp=data[j];
data[j]=data[j-inc]
data[j-inc]=temp;
}
}
}

转载于:https://www.cnblogs.com/jadmin/archive/2007/05/22/2206422.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277043.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows 故障转移+Hyper-V 虚机自动迁移高 可用

Windows 故障转移Hyper-V 虚机自动迁移高 可用 Windows 故障转移Hyper-V 虚机自动迁移高... 1一、系统原理... 31.1 高效率的 VMbus 架构... 31.2 完美支持 Linux 系统... 4二、架构拓朴... 52.1 网络及系统架构拓朴... 52.2 域结构拓朴... 5三、实验资源列表... 63.1 网络设备…

MSSqlServer基础学习01

1.新建登陆用户名,须赋予数据库访问权限方可访问已有的数据库,可以参考如下图片转载于:https://www.cnblogs.com/MyVision/p/11242417.html

js,java时间处理

1.JS获取时间格式为“yyyy-MM-dd HH:mm:ss”的字符串 function getTimeStr(){var myDate new Date();var year myDate.getFullYear(); //获取完整的年份(4位,1970-????)var month myDate.getMonth(); //获取当前月份(0-11,0代表1月)month month > 9 ? month : &quo…

框架和模式

1.什么是模式? 模式,即pattern。其实就是解决某一类问题的方法论。你把解决某类问题的方法总结归纳到理论高度,那就是模式。 Alexander给出的经典定义是:每个模式都描述了一个在我们的环境中不断出现的问题&#xff0c…

人月神话第三章

对于效率和概念的完整性来说,最好由少数干练的人员来设计和开发, 而对于大型系统, 则需要大量的人手, 以使产品能在时间上满足要求。 文章参照外科手术队伍对10个人的编程队伍进行专业化的角色分工。并为如何运作做出详细说明。…

评上了7月份的Microsoft MVP

昨天晚上觉得困,于是躺到床上去休息了一会儿,没想到醒来以后就发现了一封信,告诉我当选了7月份的MVP(我们的Cat Chen也同样当选了,园子里肯定还有其它朋友)。自从去年9月份登陆博客园以来,写技术…

javascript删除数组,索引出现问题解决办法。

var data [{ isRemove: 0, name: "项目1" },{ isRemove: 1, name: "项目2" },{ isRemove: 1, name: "项目3" },{ isRemove: 0, name: "项目4" },{ isRemove: 0, name: "项目5" },{ isRemove: 0, name: "项目6" }…

知识点 - 学习过程中积累

优化数据库查询访问&#xff1a;使用存储过程&#xff0c;利用连接池打开关闭数据库&#xff1b;操作数据是&#xff0c;尽量避免装箱&#xff1b;数据库中为<NULL>的字段&#xff0c;sql语句中用is null读取&#xff1b;开发复合控件的主要步骤&#xff1a;1&#xff09…

Mircosoft 正式把Windows Mobile改名为Windows Phone,你会因此而购买Windows Phone吗?

简介 本文讲述Windows Phone改名事件&#xff0c;以及Windows Phone发展历史和今后发展策略的想法。 事件 今天下班的时候看报纸&#xff0c;有一段新闻关于昨天(2009年10月6日)Mircosoft正式使用Windows Phone这个名字。我去到原先Windows Mobile的主页&#xff0c;已经全部由…

【课后服务】20181022切蛋糕

权当抛砖引玉吧&#xff0c;掌握记搜的方法最重要。 #include<iostream> #include<cstring> #include<cstdio> using namespace std; int n,m,k; bool book[21][21]; int cake[21][21]; int dp[21][21][21][21]; int yt(int x,int y,int w,int h)//返回蛋糕…

我也来记录我的一些开发心得和笔记!

博客园&#xff0c;我来了&#xff01; 转载于:https://www.cnblogs.com/rose2007/archive/2007/07/11/814435.html

经典vim插件功能说明、安装方法和使用方法介绍(已更新)

1 # 2 转载请注明出处: http://blog.csdn.net/tge7618291 http://nuoerlz.is-programmer.com 8 # 9 1. 查看 key 相关信息说明的命令 :help keycodes 10 11 # 12 2. ctags 13 (1). 帮助手册查看 14 :help usr_29 15 16 (2). 功能 17 ctags的功能, 只要在unix/lin…

【哈利波特】Sherbert Lemon对HP的解读之11

NINEScar FaceThe characteristics of Harry’s scar change considerably.PS/SS – BurningQUOTEHarry, who was starting to feel warm and sleepy, looked up at the High Table again. Hagrid was drinking deeply from his goblet. Professor McGonagall was talking to P…

Linux 下, npm i 老是被killed 已杀死

2019独角兽企业重金招聘Python工程师标准>>> node&#xff1a;v8.12.0 npm v6.4.1 npm i 安装到一半会报这样到错误&#xff0c;并终止&#xff1a; npm WARN deprecated socks1.1.10: If using 2.x branch, please upgrade to at least 2.1.6 to avoid a serious …

(转)创建X509证书,并获取证书密钥的一点研究

创建X509证书&#xff0c;并获取证书密钥的一点研究 作者&#xff1a;肖波 个人博客&#xff1a;http://blog.csdn.net/eaglet ; http://www.cnblogs.com/eaglet 2007/7 南京 背景 服务器SSL数字证书和客户端单位数字证书的格式遵循 X.509 标准。 X.509 是由国际电信联盟&#…

css样式优先级计算规则

css样式的优先级分为引入优先级和声明优先级。 引入优先级 引入样式一般分为外部样式&#xff0c;内部样式&#xff0c;内联样式。 外部样式&#xff1a;使用link引入的外部css文件。 内部样式&#xff1a;使用style标签书写的css样式。 内联样式&#xff1a;直接书写在html标签…

phpstudy-5.6.27-nts  安装redis扩展

2019独角兽企业重金招聘Python工程师标准>>> redis扩展安装流程 第一步&#xff1a; 首先直接查看一下phpinfo()的信息 找到下面两条信息 Architecturex86PHP Extension BuildAPI20131226,NTS,VC11Loaded Configuration FileD:\phpStudy\php\php-5.6.27-nts\php.ini…

用DDA Convolution和Perlin Noise来模拟水粉画笔触

在西方&#xff0c;水彩画和水粉画是可以统称为Watercolor的,水粉画通常也称为不透明水彩画或树胶水彩画&#xff08;Gouache&#xff09;&#xff0c;两者既有相似之处&#xff0c;又有所区别。水粉画是以水作为媒介&#xff0c;这一点&#xff0c;它与水彩画是相同的。所以&a…

第三课 Makefile文件的制作(上)

1.序言&#xff1a; 前面的课程讲解了从gcc编译过程到其实践&#xff0c;大家可以看到其实在这些步骤中有些是可以简化编译的&#xff0c;但由于参数多以及项目中文件数量多的原因难免会造成错误甚至是浪费大量的时间在这编译上&#xff0c;为此linux系统中专门也有这个工具&am…

刺猬文│从启动方式来看播客链的运行机制—设置验证者

&#xff08;图片出自网络&#xff0c;版权归原作者所有&#xff09;上一篇刺猬文我们介绍了播客链是如何实现Dpos的&#xff0c;其实质过程就是&#xff1a;节点A打包&#xff0c;将打包的区块发送给其它的节点&#xff0c;其它节点根据当前时间&#xff0c;判断是否应该由A节…