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中可以防止字 ...
随机推荐
- GitLab CI runner can't connect to tcp://localhost:2375 in kubernetes
报错的.gitlab-ci.yml配置如下 image: docker:latest services: - docker:dind variables: DOCKER_HOST: tcp://loc ...
- 09-Flutter移动电商实战-移动商城数据请求实战
1.URL接口管理文件建立 第一步需要在建立一个URL的管理文件,因为课程的接口会一直进行变化,所以单独拿出来会非常方便变化接口.当然工作中的URL管理也是需要这样配置的,以为我们会不断的切换好几个服 ...
- 08-Flutter移动电商实战-dio基础_伪造请求头获取数据
在很多时候,后端为了安全都会有一些请求头的限制,只有请求头对了,才能正确返回数据.这虽然限制了一些人恶意请求数据,但是对于我们聪明的程序员来说,就是形同虚设.这篇文章就以极客时间 为例,讲一下通过伪造 ...
- CollectionUtils.select用法
import java.util.ArrayList;import java.util.List; import org.apache.commons.collections.CollectionUt ...
- Impala 介绍(转载)
一.简介 1.概述 Impala是Cloudera公司推出,提供对HDFS.Hbase数据的高性能.低延迟的交互式SQL查询功能. •基于Hive使用内存计算,兼顾数据仓库.具有实时.批处理.多并发等 ...
- 【批处理】for命令
for 命令 学习:https://www.cnblogs.com/Braveliu/p/5081087.html FOR这条命令基本上都被用来处理文本,但还有其他一些好用的功能! 看看他的基本格式( ...
- mysql ERROR 1862 (HY000): 密码超时错误解决 Your password has expired.To log in you must change it using a client that supports expired password
工具链接可能报错,使用黑窗口链接后: 1. SET PASSWORD = PASSWORD("xinmima"); 2. flush privileges; 使用新密码链接即可.
- 【JZOJ6206】【20190610】二分图边染色
题目 对一个二分图的边染色,满足有相同端点的边的颜色一定不同; 设最优染色为\(C\) ,你的染色为\(X\),只需要满足$ X \le 2^ {\lceil log C \rceil }$ ...
- c++ 题解
43题 #include <random> #include <iostream> int main() { ][] = { {,,,}, {,,,}, {,,,}}; ; n ...
- Sybase数据库连接配置
简介 1984年,Mark B. Hiffman和Robert Epstern创建了Sybase公司,并在1987年推出了Sybase数据库产品.SYBASE主要有三种版本,一是UNIX操作系统下运行 ...