学习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 中包含了各 ...
随机推荐
- Spark中的wordCount程序实现
import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaPairRDD; import org.apache.s ...
- bzoj 3611[Heoi2014]大工程 虚树+dp
题意: 给一棵树 每次选 k 个关键点,然后在它们两两之间 新建 C(k,2)条 新通道. 求: 1.这些新通道的代价和 2.这些新通道中代价最小的是多少 3.这些新通道中代价最大的是多少 分析:较常 ...
- 用JS添加文本框案例代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- centos 安装mysql 5.5.12
1.安装gcc-c++ gcc make cmake编译器 2.安装ncurses 3.添加用户组 groupadd mysql useradd -r -g mysql mysql 4.安装 tar ...
- Cocos2d-x 多分辨率支持
最近遇到多分辨率支持问题,所以查了一些资料.将一些收获共享一下,以便自己和其他需要的朋友日后参考. 如果我要建立一个cocos2d-x项目,我的目标是支持iphone3G( 480, 320 ),ip ...
- 负载均衡软件LVS分析二(安装)
一. 安装LVS软件 1.安装前准备工作操作系统:统一采用Centos4.4版本.地址规划,如表1所示:表1 更详细的信息如图2所示: 图2 LVS DR模式安装部署结构图 图2中的VIP指的是虚 ...
- apache 运行php环境之困扰,无法加载多个不同的.html文件
又是一个项目,为多个纯静态html页面h5游戏页,原本是一个简单得不能的项目,但是却多生了事端. 我按照apache的惯例,将文件上传到服务器的DocumentRoot目录,进行测试了. 刚开始使用目 ...
- MIPS 跳转指令BAL vs JAL
今天调试程序,发现在windows和Linux下,diab编译的结果不一样,一个能跑一个不能跑.最后定位到了函数跳转上. 程序代码里的函数跳转写的是BAL,在windows下编译结果正常,在Linux ...
- 利用终端命令实现进入ntfs分区有两种方法。
一.手动设置ubuntu自动挂载Windows分区方法:1.先用FDISK命令查看一下磁盘的UUID $sudo fdisk -l /dev/sda1 * 1 851 6835626 83 Linux ...
- ArcGIS制图表达Representation-符号制作
ArcGIS制图表达Representation-符号制作 by 李远祥 在ArcGIS的符号里面,存在着两种符号体系,一种是传统的标准符号体系,一种是制图表达符号体系.标准符号几乎被绝大部分ArcG ...