学习Java 以及对几大基本排序算法(对算法笔记书的研究)的一些学习总结(Java对算法的实现持续更新中)
Java排序一,冒泡排序!
刚刚开始学习Java,但是比较有兴趣研究算法。最近看了一本算法笔记,刚开始只是打算随便看看,但是发现这本书非常不错,尤其是对排序算法,以及哈希函数的一些解释,让我非常的感兴趣,就记录一下自己的学习总结!
排序:将一些无序的元素按照某种规则排列的过程就叫“排序”。在生活中,有时候可能是一些少量的数据 ,,,但是 ,也有可能是 一些的大数据 。排序是非常基础和重要的算法,有着广泛的理论基础和实践需求。(加粗部分摘自《算法笔记》原话!:-D)
一个排序算法,有3个方面去衡量优劣:
1,时间复杂度
2,空间复杂度
3,稳定性
一:冒泡排序
冒泡排序是我们大多数同学接触的第一个排序算法,它虽然在时间上不占优势,但是代码十分简洁,逻辑很清晰,实现难度低!
基本思想:首先将第一个元素(下标为0)和第二个元素(下标为1)进行比较,若为逆序,则将两个元素进行一次交换,然后比较第二个元素和第三个元素。依次类推,直至第n-1个元素和第n个元素进行过比较为止。上述过程称为第一趟冒泡排序,其结果使得最大的那个元素被放到最后一个位置上(沉下去了)。然后进行第二趟冒泡排序,对前n-1个元素进行同样操作,其结果是使元素次大的被放到第n-1个位置上。意思就是,第i趟冒泡排序是从1个元素到第n-i+1个元素依次比较进行比较(也就是下标为0的元素到下标为ary.length-i,写作表达式即为for(int i=0;i<ary.length-i-1;i++)),并在“逆序”时交换相邻记录,最终达到将大的值沉下去,小的值冒上来!
比如:定义一个整型数组 int [] int intarray=new int []{5,66,8,9,100,0,225,1};
分析过程:
Java实现代码如下:
到此,Java中的冒泡排序算写完了,还有老师留下一个问题就是冒泡排序外层循环M次,内层循环N次,则共比较的多少次(不包括交换)?
我的观点是:假设总共有8个元素,则M=8;则N=7,6,5,4,3,2。倒数第二趟的时候比较两次就可以完全确定顺序了!所有答案就是,以2为首元素的等差数列,所有就总共有
{(2+M-1)*(N-1)}/2次的比较。
学习Java 以及对几大基本排序算法(对算法笔记书的研究)的一些学习总结(Java对算法的实现持续更新中)的更多相关文章
- java视频教程 Java自学视频整理(持续更新中...)
视频教程,马士兵java视频教程,java视频 1.Java基础视频 <张孝祥JAVA视频教程>完整版[RMVB](东西网) 历经5年锤炼(史上最适合初学者入门的Java基础视频)(传智播 ...
- 痞子衡嵌入式:史上最强i.MX RT学习资源汇总(持续更新中...)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MX RT学习资源. 类别 资源 简介 官方汇总 i.MXRT产品主页 恩智浦官方i.MXRT产品主页,最权威的资料都在这里,参考手 ...
- 常见算法合集[java源码+持续更新中...]
一.引子 本文搜集从各种资源上搜集高频面试算法,慢慢填充...每个算法都亲测可运行,原理有注释.Talk is cheap,show me the code! 走你~ 二.常见算法 2.1 判断单向链 ...
- java 学习必备的软件,持续更新中
小编会持续更新在学习Java过程中需要的软件以及各种文件: 话不多说,看行动! 一:JDK (1)JDK1.8(*64): 链接:https://pan.baidu.com/s/1vM0jNXn2CT ...
- [Hadoop] Hadoop学习历程 [持续更新中…]
1. Hadoop FS Shell Hadoop之所以可以实现分布式计算,主要的原因之一是因为其背后的分布式文件系统(HDFS).所以,对于Hadoop的文件操作需要有一套全新的shell指令来完成 ...
- Kotlin教程——史上最全面、最详细的学习教程,持续更新中....
关于这个系列教程,我是从最基础的开发环境搭建到项目进阶到后面的项目开发这个过程来写的.我一直秉承从实际项目开发以及源码解析的角度去写好这个教程,并让从未接触过编程的朋友能学好kotlin这门语言.所以 ...
- Java的一些良好习惯及细节------持续更新中...
1.在做条件判断时,不要将变量放在判断符的左边,这样做可以防止出现空指针异常,以字符串比较为例: String name = "Tom"; //这种方式不推荐,如果变量name为空 ...
- Linux 系统化学习系列文章总目录(持续更新中)
本页内容都是本人系统化学习Linux 时整理出来的.这些文章中,绝大多数命令类内容都是翻译.整理man或info文档总结出来的,所以相对都比较完整. 本人的写作方式.风格也可能会让朋友一看就恶心到直接 ...
- 【java学习】实践中总结--持续更新中
目录: 一些定义 配置环境 相关语法 1.一些定义 java中DO的含义: https://blog.csdn.net/canot/article/details/51698047 DAO 中包含了各 ...
随机推荐
- BZOJ2720: [Violet 5]列队春游
2720: [Violet 5]列队春游 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 173 Solved: 125[Submit][Status] ...
- UVa 311 - Packets
题目大意:有1X1,2X2 ... 5X5,6X6六种类型的物品,把他们装进6X6的盒子里,求使用的最少盒子数. 贪心吧,其实一看就知道思路了,算是常识吧,装物品时通常都是先装大的,再在其余空间放小的 ...
- UVa 103 - Stacking Boxes
题目大意:矩阵嵌套,不过维数是多维的.有两个个k维的盒子A(a1, a1...ak), B(b1, b2...bk),若能找到(a1...ak)的一个排列使得ai < bi,则盒子A可嵌套在盒子 ...
- 创建 Web 前端开发环境(node和npm以及git)
Web 前端开发涉及多种工具,这里将常用工具的安装和配置进行说明,提供了详细的说明,为后继的开发创建一个坚实的基础. 本文介绍的工具有:NodeJS, NPM, Bower, Git 和 Grunt. ...
- Js把IE COM数组列表转换成数组
今天写组件的时候遇到一个问题,就是当我需要对获取到的对象列表进行删减的时候,发现没有合适的方法,比如: //获取图片列表 var imgs = document.getElementsByTagNam ...
- constrain to margins
如果你点了constrain to margins,左右会有8个点的空挡,而是从8个点后开始计算约束,而没有点时,已屏幕的0点开始计算.
- CocoaPods ReactiveCocoa 学习实践一 之 配置环境
1.安装CocoaPods 1.00.参考 CocoaPods 文档 1.01.是否已安装 which pod 1.1.升级gem命令 sudo gem update --system 1.2.切换C ...
- [转载]rabbitmq可靠发送的自动重试机制
转载地址http://www.jianshu.com/p/6579e48d18ae http://www.jianshu.com/p/4112d78a8753 接这篇 在上文中,主要实现了可靠模式的c ...
- java发送邮件完整实例 java邮件工具类
http://yuncode.net/code/c_552a2e2dc593894 package com.srie.mail; import java.util.Properties; import ...
- jqGrid Demos
http://www.trirand.com/blog/jqgrid/jqgrid.html http://www.cnblogs.com/huozhicheng/archive/2012/11/11 ...