标签(空格分隔): 学习笔记


1. 冒泡

public class MaoPao{
public static void sort(int[] arr){
for(int i=arr.length-1;i>0;i--){
for(int j=0;j<i;j++){
if(arr[j]>arr[j+1]){
int tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
}
}
}
}
public static void main(String[] args){
int[] arr=new int[]{1,4,11,-3,34,5,-2,7,8,0,12,};
sort(arr);
for(int num:arr){
System.out.print(num+" ");
}
}
}

2. 快排

public class QuickkSort {
public static void sort(int[] matrix,int start,int end) {
if(start>=end) return;
int l=start;
int r=end;
int tmp=matrix[l];
while(l<r) {
while(matrix[r]>=tmp && l<r) {
r--;
}
matrix[l]=matrix[r];
while(matrix[l]<=tmp && l<r) {
l++;
}
matrix[r]=matrix[l];
}
matrix[l]=tmp;
sort(matrix,start,l-1);
sort(matrix,l+1,end);
} public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr=new int[] {1,4,11,-3,34,5,-2,7,8,0,12};
sort(arr, 0, arr.length-1);
for (int num:arr) {
System.out.print(num+" ");
} } }

3. 选择排序

public class SelectSort {
public static void sort(int[] arr) {
for(int i=0;i<arr.length;i++) {
int mindex=i;
for(int j=i;j<arr.length;j++) {
if(arr[mindex]>arr[j])
mindex=j;
}
int tmp=arr[mindex];
arr[mindex]=arr[i];
arr[i]=tmp;
} } public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr=new int[] {1,4,11,-3,34,5,-2,7,8,0,12};
sort(arr);
for(int num:arr) {
System.out.print(num+" ");
}
} }

4.直接插入

public class InsertSort {
public static void sort(int[] arr) {
for(int i=0;i<arr.length-1;i++) {
for(int j=i+1;j>0;j--) {
if(arr[j]<arr[j-1]) {
int tmp=arr[j];
arr[j]=arr[j-1];
arr[j-1]=tmp;
}else break;
//break是一定要加的,如果插入之后不加break,插入之后还会和前面的比较,浪费时间
}
} } public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr=new int[] {1,4,11,-3,34,5,-2,7,8,0,12};
sort(arr);
for(int num:arr) {
System.out.print(num+" ");
}
} }

5.二分插入

public class Insert {
public static void sort(int [] arr) {
for(int i=0;i<arr.length-1;i++) {
int left=0;
int right=i;
while(left<right) {
int mid=left+(right-left+1)/2;
if(arr[mid]>=arr[i+1]) {
right=mid-1;
}
else {
left=mid;
}
} int k=arr[i+1]>=arr[left]?left+1:left;
//上述这段代码还可以解决一个二分查找问题,及如果找到某个数在数组中的索引,就返回他的索引,如果这个数存在多个,就返回最左边的那个索引,效果不错
int tmp=arr[i+1];
for(int j=i;j>=k;j--) {
arr[j+1]=arr[j];
}
arr[k]=tmp; }
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr=new int[] {1,9,2,2,6,8,3,56,23,66,21,12,14,34};
sort(arr);
for(int num:arr) {
System.out.print(num+" ");
}
} }

java学习笔记(5)-排序(1)的更多相关文章

  1. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  2. 20145330第八周《Java学习笔记》

    20145330第八周<Java学习笔记> 第十五章 通用API 通用API 日志:日志对信息安全意义重大,审计.取证.入侵检验等都会用到日志信息 日志API Logger:注意无法使用构 ...

  3. 20145330第五周《Java学习笔记》

    20145330第五周<Java学习笔记> 这一周又是紧张的一周. 语法与继承架构 Java中所有错误都会打包为对象可以尝试try.catch代表错误的对象后做一些处理. 使用try.ca ...

  4. Java学习笔记4

    Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...

  5. java学习笔记04--数组

    java学习笔记04--数组 数组复制的方法是使用System类提供的arraycopy()方法,其语法如下: System.arraycopy(Object src, int srcPos, Obj ...

  6. java学习笔记13--比较器(Comparable、Comparator)

    java学习笔记13--比较器(Comparable.Comparator) 分类: JAVA 2013-05-20 23:20 3296人阅读 评论(0) 收藏 举报 Comparable接口的作用 ...

  7. java学习笔记11--集合总结

    java学习笔记系列: java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Ob ...

  8. 20145230《java学习笔记》第七周学习总结

    20145230 <Java程序设计>第7周学习总结 教材学习内容 Lambda语法概览 我们在许多地方都会有按字符串长度排序的需求,如果在同一个方法内,我们可以使用一个byName局部变 ...

  9. Java学习笔记之---方法和数组

    Java学习笔记之---方法与数组 (一)方法 (1)什么是方法? 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 (2)方法的优点 使程序变得更简短而 ...

  10. java学习笔记之基础篇

    java选择语句之switch   //switch可以用于等值判断 switch (e) //int ,或则可以自动转化成int 的类型,(byte char short)枚举jdk 7中可以防止字 ...

随机推荐

  1. mybatis的注意事项一

    在UserMapper.xml文件中写resultType="cn.smbms.dao.pojo.User"返回类型的全路径是不是很长,而且也比较不美观:不便于后期项目的维护. 解 ...

  2. 【游记】CSP2019 垫底记

    考试时候的我: Day 1 做完 \(T1\) 和 \(T2\),还有 \(2.5 h\),我想阿克 \(Day1\).(\(T3\):不,你不想) 不过一会就想出来给每个点 dfs 贪心选一个点,然 ...

  3. LeetCode 1027. Longest Arithmetic Sequence

    原题链接在这里:https://leetcode.com/problems/longest-arithmetic-sequence/ 题目: Given an array A of integers, ...

  4. React-Router常见API

    React-Router是React项目中处理路由的库. 1. HashRouter 通过hashchange监听路由的变化,通过window.location.hash赋值触发监听的变化. 本质是一 ...

  5. C++ socket bind() 函数绑定错误

    VS2015编译错误: errorCxxxx: 'initializing' : cannot convert from 'std::_Bind<false,void,SOCKET&,s ...

  6. windows串口编程Win32,PComm串口开发

    https://blog.csdn.net/u011430225/article/details/51496456 https://blog.csdn.net/eit520/article/detai ...

  7. linux定时执行shell脚本

    写一个shell脚本,定时执行简单示例 很多时候我们有希望服务器定时去运行一个脚本来触发一个操作,比如说定时去备份服务器数据.数据库数据等 不适合人工经常做的一些操作这里简单说下 Shell俗称壳,类 ...

  8. Spring Boot 配置文件 bootstrap vs application 到底有什么区别?

    用过 Spring Boot 的都知道在 Spring Boot 中有以下两种配置文件 bootstrap (.yml 或者 .properties) application (.yml 或者 .pr ...

  9. 安装关系型数据库MySQL 安装大数据处理框架Hadoop

    作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3161 1.Hadoop的介绍 Hadoop最早起源于Nutch.Nut ...

  10. magento2重写virtualType并且传参

    今天遇到一个需求需要重写一个block,但是这个block是应用virtualType实现,所以需要先重写virtualType,然后却因为参数丢失而获取不到正确的结果.因此,查阅文档,需要用type ...