Java学习笔记——排序算法之简单排序
男儿何不带吴钩,收取关山五十州。请君暂上凌烟阁,若个书生万户侯?
public class BubbleSort { //最简单的排序,从0开始逐个对比往上冒
public static void bubbleSort(int[] arr) {
for (int i = ; i < arr.length-1; i++) {
for (int j = i+; j < arr.length; j++) {
if (arr[i]>arr[j]) {
arr[i] = arr[i]^arr[j];
arr[j] = arr[i]^arr[j];
arr[i] = arr[i]^arr[j];
}
}
}
}
//正宗冒泡,正向
public static void bubbleSortA(int[] arr) {
for (int i = ; i < arr.length-; i++) {
for (int j = ; j < arr.length-i-; j++) {
if (arr[j]>arr[j+]) {
arr[j] = arr[j]^arr[j+];
arr[j+] = arr[j]^arr[j+];
arr[j] = arr[j]^arr[j+];
}
}
}
}
//反向
public static void bubbleSortB(int[] arr) {
for (int i = ; i < arr.length-; i++) {
for (int j = arr.length-; j > i; j--) {
if (arr[j-]>arr[j]) {
arr[j] = arr[j]^arr[j-];
arr[j-] = arr[j]^arr[j-];
arr[j] = arr[j]^arr[j-];
}
}
}
}
//优化冒泡
public static void bubbleSortA0(int[] arr) {
boolean flag = true;
for (int i = ; i < arr.length- && flag; i++) {
flag = false;
for (int j = arr.length-; j > i; j--) {
if (arr[j-]>arr[j]) {
arr[j] = arr[j]^arr[j-];
arr[j-] = arr[j]^arr[j-];
arr[j] = arr[j]^arr[j-];
flag = true;//若没有发生交换,说明每对的前一位都不比后一位更大。无需再次排序
}
}
}
}
}
2、简单选择排序,跟冒泡第一个思路差不多。区别在于不是每次都交换,而是记录最值的下标位置,每趟的最后交换
public class SimpleSelectSort { //简单冒泡的升级版,内外层循环不变,赋值n次,交换一次
public static void simpleSelectSort(int[] arr){
int min;
for (int i = ; i < arr.length-1; i++) {
min = i;
for (int j = i+; j < arr.length; j++) {
if (arr[min] > arr[j]) {
min = j;
}
}
if (min != i) {
arr[min] = arr[min] ^ arr[i];
arr[i] = arr[min] ^ arr[i];
arr[min] = arr[min] ^ arr[i];
}
}
}
}
3、直接插入法,这个思路就很好了,类似于捋牌。
public class StraightInsertionSort { //该方法从第二位开始取出,如果比前面小插入,前面的后移,想象理牌5,3,4,6,2,同花顺
public static void straightinsertionsort(int[] arr){
int temp;
for (int i = ,j = ; i < arr.length; i++) {
if (arr[i]<arr[i-]) {
temp = arr[i];//取出牌
j = i-;//给内层循环赋初值
while (j>= && arr[j] > temp) {
arr[j+] = arr[j];//比牌大的后移
j--;
}
arr[j+] = temp;//插入牌
}
}
}
}
Java学习笔记——排序算法之简单排序的更多相关文章
- JAVA学习笔记(4)—— 排序算法
排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法. 排序算法大体可分为两种: 一种是比较排序,时间复杂度O(nlogn) ...
- [java初探06]__排序算法的简单认识
今天,准备填完昨天没填的坑,将排序算法方面的知识系统的学习一下,但是在简单的了解了一下后,有些不知如何组织学习了,因为排序算法的种类,实在是太多了,各有优略,各有适用的场景.有些不知所措,从何开始. ...
- 5.4 集合的排序(Java学习笔记)(Collections.sort(),及Arrays.sort()底层分析)
1.Comparable接口 这个接口顾名思义就是用于排序的,如果要对某些对象进行排序,那么该对象所在的类必须实现 Comparabld接口.Comparable接口只有一个方法CompareTo() ...
- Java中的经典算法之选择排序(SelectionSort)
Java中的经典算法之选择排序(SelectionSort) 神话丿小王子的博客主页 a) 原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕.也就是:每一趟 ...
- Java常见排序算法之Shell排序
在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let ...
- C语言排序算法之简单交换法排序,直接选择排序,冒泡排序
C语言排序算法之简单交换法排序,直接选择排序,冒泡排序,最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 简单交换法排序 /*简单交换法排序 根据序列中两个记录键值的比较结果来对换这两 ...
- Java学习笔记4
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
- java学习笔记11--集合总结
java学习笔记系列: java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Ob ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
随机推荐
- js移动端横竖屏检测
方法一:用resize事件来判断,利用屏幕的宽高比,来判断横竖屏 (兼容性较好) (function () { var updateOrientation = function () { var or ...
- MySQL 查询重复的数据,以及部分字段去重和完全去重
1.查找表中多余的重复记录(多个字段) select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vit ...
- maven工程莫名其妙只在项目名称那里有一个红叉
manven工程里面没有报错的地方,编译也没有问题,只是项目名称那里有一个红叉. 解决办法: 右击项目-->maven-->update project 注意: 这种方法有时可 ...
- Appium手势密码滑动之Z字形走势(java篇)
1.直接使用负的偏移量appium会报错,在后面加上moveto(1,1)就行了 2.直接看图说话 废话少说看代码如: List<AndroidElement> element = dri ...
- 性能调优之MYSQL高并发优化下
三.算法的优化 尽量避免使用游标,因为游标的效率较差,如果游标操作的数据超过1万行,那么就应该考虑改写..使用基于游标的方法或临时表方法之前,应先寻找基于集的解决方案来解决问题,基于集的方法通常更有效 ...
- python修行:练习购物车
product_list = [ ('Iphone',5800), ('Mac Pro',9800), ('Bike',800), ('Watch',10600), ('Coffee',31), (' ...
- .NET遇上Docker - Harbor的安装与基本使用
Harbor是一个开源企业级Docker注册中心,可以用于搭建私有的Docker Image仓库.可以实现权限控制等. 安装Harbor 首先,需要安装Docker和Docker Compose,参考 ...
- JDK8-十大新特性-附demo
JDK原计划17年上半年就发版,但未成功发版.才发现JDK8的特性还没总结过,特此总结. 一.十大特性. 1.Lambda表达式 2.Stream函数式操作流元素集合 3.接口新增:默认方法与静态方法 ...
- mac下安装Java开发环境
1.安装JDK 打开网页,进入jdk官网下:http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载后,进入finde ...
- Android -- 带你从源码角度领悟Dagger2入门到放弃
1,以前的博客也写了两篇关于Dagger2,但是感觉自己使用的时候还是云里雾里的,更不谈各位来看博客的同学了,所以今天打算和大家再一次的入坑试试,最后一次了,保证最后一次了. 2,接入项目 在项目的G ...