java学习笔记(5)-排序(1)
标签(空格分隔): 学习笔记
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)的更多相关文章
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- 20145330第八周《Java学习笔记》
20145330第八周<Java学习笔记> 第十五章 通用API 通用API 日志:日志对信息安全意义重大,审计.取证.入侵检验等都会用到日志信息 日志API Logger:注意无法使用构 ...
- 20145330第五周《Java学习笔记》
20145330第五周<Java学习笔记> 这一周又是紧张的一周. 语法与继承架构 Java中所有错误都会打包为对象可以尝试try.catch代表错误的对象后做一些处理. 使用try.ca ...
- Java学习笔记4
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
- java学习笔记04--数组
java学习笔记04--数组 数组复制的方法是使用System类提供的arraycopy()方法,其语法如下: System.arraycopy(Object src, int srcPos, Obj ...
- java学习笔记13--比较器(Comparable、Comparator)
java学习笔记13--比较器(Comparable.Comparator) 分类: JAVA 2013-05-20 23:20 3296人阅读 评论(0) 收藏 举报 Comparable接口的作用 ...
- java学习笔记11--集合总结
java学习笔记系列: java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Ob ...
- 20145230《java学习笔记》第七周学习总结
20145230 <Java程序设计>第7周学习总结 教材学习内容 Lambda语法概览 我们在许多地方都会有按字符串长度排序的需求,如果在同一个方法内,我们可以使用一个byName局部变 ...
- Java学习笔记之---方法和数组
Java学习笔记之---方法与数组 (一)方法 (1)什么是方法? 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 (2)方法的优点 使程序变得更简短而 ...
- java学习笔记之基础篇
java选择语句之switch //switch可以用于等值判断 switch (e) //int ,或则可以自动转化成int 的类型,(byte char short)枚举jdk 7中可以防止字 ...
随机推荐
- pandas 常用方法使用示例
from pandas import DataFrame import numpy as np import pandas as pd t={ , , np.nan, , np.nan, ], &qu ...
- “Another git process seems to be running in this repository...”Git此问题解决
Git中显示:Another git process seems to be running in this repository, e.g.an editor opened by 'git comm ...
- Python 代码混淆和加密技术
动机 Python进行商业开发时, 需要有一定的安全意识, 为了不被轻易的逆向. 混淆和加密就有所必要了. 混淆 为了增加代码阅读的难度, 源代码的混淆非常必要, 一个在线的Python代码混淆网站. ...
- pageContext 和 config 内置对象
forword("目标页面") : 使当前页面跳转到另一个目标页面 include("目标页面") ;使当前页面包含另一个页面的信息
- LeetCode 446. Arithmetic Slices II - Subsequence
原题链接在这里:https://leetcode.com/problems/arithmetic-slices-ii-subsequence/ 题目: A sequence of numbers is ...
- learning scala extracors example
object Twice { def apply(x: Int): Int = x * def unapply(z: Int): Option[Int] = == ) Some(z / ) else ...
- WinDbg常用命令系列---内存查看d*
d*命令显示给定范围内的内存内容. d{a|b|c|d|D|f|p|q|u|w|W} [Options] [Range] dy{b|d} [Options] [Range] d [Options] [ ...
- “知乎杯”2018 CCF 大学生计算机系统与程序设计竞赛 绝地求生(battleground)
/* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-ts ...
- [HAOI2015]树上染色 树状背包 dp
#4033. [HAOI2015]树上染色 Description 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并 将其他的N-K个点染成白 ...
- 【loj3045】【ZJOI2019】开关
题目 \(n\)个开关,一开始处于关闭状态,你需要将他们按成\(s\)状态,按成了之后就停止操作; 每次按下开关的i概率为\(\frac{p_i}{\sum_{i=1}^{n}p_i}\) ,问期望步 ...