Java_基础之数组排序(从小到大)

1、冒泡排序:

冒泡排序可以写成两层循环。

每次循环将最大的数值交换到数组的最后一个。

每排序完一次,后面就少比较一次。所以二层循环的判断条件写成:arry.length-1-i

2、选择排序:

选择排序可以写成两层循环。

每次排序会选择出数组中最小的数,将其交换到数组的第一位。

平均时间复杂度都是:O(n^2)

冒泡排序稳定,选择排序不稳定。

Java里面有一个自动排序的函数:Arrays.sort();

手写排序,让我们更好的理解算法,这两个排序为最简单的排序算法 。

想找一份好的工作和工资比较高的,就要好好学好算法。

以下将是数组排序的代码:

 /*
* Java的简单数组排序(从小到大)
* 1、冒泡排序
* 2、选择排序
* 平均时间复杂度都是:O(n^2)
* 冒泡排序稳定,选择排序不稳定。
*/
package com.basis; public class ArraySort { public static void main(String[] args) {
int[] arry = {1,9,7,25,15,36,99,100,85,45,20,10,3}; //数组初始化
System.out.print("原始数组:");
Print(arry);
System.out.print("\n冒泡排序:");
Print(BubbleSort(arry));
System.out.print("\n选择排序:");
Print(SelectionSort(arry));
System.out.print("\n改进的选择排序:");
Print(SelectionSortChange(arry));
} //冒泡排序
public static int[] BubbleSort(int arry[]){
for(int i=0;i<arry.length-1;i++){
for(int j=0;j<arry.length-1-i;j++){
if(arry[j]>arry[j+1]){ //交换过程
int temp = arry[j];
arry[j] = arry[j+1];
arry[j+1] = temp;
}
}
}
return arry;
} //选择排序
public static int[] SelectionSort(int arry[]){
for(int i=0;i<arry.length;i++){
for(int j=i;j<arry.length;j++){
if(arry[i]>arry[j]){ //交换过程
int temp = arry[i];
arry[i] = arry[j];
arry[j] = temp;
}
}
}
return arry;
} /*
* 改进:
* 先判断,若符合,先不要立刻去交换两个数,把小的那个数组的数下标存起来,
* 全部比较完再交换,每次循环只需要交换一次或着不交换
*/
//改进的选择排序
public static int[] SelectionSortChange(int arry[]){
for(int i=0;i<arry.length;i++){
int index=i; //标记数组下标
for(int j=i;j<arry.length;j++){
if(arry[index]>arry[j]){ //每一次循环找出数组的值为最小的下标
index=j;
}
}
if(index != i){
int temp = arry[index];
arry[index] = arry[i];
arry[i] = temp;
}
}
return arry;
} //数组的输出
public static void Print(int arry[]){
for(int i=0;i<arry.length;i++){
System.out.print(arry[i]+" ");
}
}
}

运行的结果:

Java_基础篇(数组排序)的更多相关文章

  1. Java_基础篇(数组的反转)

    数组反转也是Java的基础. 数组反转要求掌握的是: 1).创建一个数组,在内存中申请一块空间. 2).实例化数组. 3).对数组的了解.如:数组的长度,数组的下标,数组的表示方法. 4).数组的交换 ...

  2. Java_基础篇(杨辉三角)

    对于刚刚学Java的同学来说,杨辉三角是一个很好的例子. 杨辉三角让初学者更好的理解数组的定义和更好地去运用数组,特别是二维数组. 除此之外,还让初学者更好的掌握嵌套语句的使用. 以下是我的杨辉三角J ...

  3. php基础篇-二维数组排序 array_multisort

    原文:php基础篇-二维数组排序 array_multisort 对2维数组或者多维数组排序是常见的问题,在php中我们有个专门的多维数组排序函数,下面简单介绍下: array_multisort(a ...

  4. 【Java_多线程并发编程】基础篇——synchronized关键字

    1. synchronized同步锁的原理 当我们调用某对象的synchronized方法或代码块时,就获取了该对象的同步锁.例如,synchronized(obj)就获取了“obj这个对象”的同步锁 ...

  5. 前端总结·基础篇·JS(二)数组深拷贝、去重以及字符串反序和数组(Array)

    目录 这是<前端总结·基础篇·JS>系列的第二篇,主要总结一下JS数组的使用.技巧以及常用方法. 一.数组使用 1.1 定义数组 1.2 使用数组 1.3 类型检测 二.常用技巧 2.1 ...

  6. C#多线程之基础篇3

    在上一篇C#多线程之基础篇2中,我们主要讲述了确定线程的状态.线程优先级.前台线程和后台线程以及向线程传递参数的知识,在这一篇中我们将讲述如何使用C#的lock关键字锁定线程.使用Monitor锁定线 ...

  7. 一步步学习javascript基础篇(0):开篇索引

    索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...

  8. 2000条你应知的WPF小姿势 基础篇<15-21>

    在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师,对C#和WPF有着极深的热情.最为出色的是他维护了两个博客:2,000Things You Should Know ...

  9. ABP框架实践基础篇之开发UI层

    返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 说明 其实最开始写的,就是这个ABP框架实践基础篇.在写这篇博客之前,又回头复习了一下ABP框架的理论,如果你还没学习,请查看AB ...

随机推荐

  1. hystrix服务降级(3)

    Hystrix使用fallback机制很简单,继承HystrixCommand只需重写getFallback(),继承HystrixObservableCommand只需重写resumeWithFal ...

  2. TensorFlow从1到2(五)图片内容识别和自然语言语义识别

    Keras内置的预定义模型 上一节我们讲过了完整的保存模型及其训练完成的参数. Keras中使用这种方式,预置了多个著名的成熟神经网络模型.当然,这实际是Keras的功劳,并不适合算在TensorFl ...

  3. BFPRT算法

    解决的问题:在一个数组中找到最小的k个数 常规解法:1.排序,输出前k个数,时间复杂度O(n*log(n)). 2.利用一个大小为k的大根堆,遍历数组维持大根堆,最后返回大根堆就可以了,时间复杂度O( ...

  4. Dynamics 365 CE中使用FetchXML进行聚合运算

    微软动态CRM专家罗勇 ,回复328或者20190429可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! Dynamics 365 Customer Engagement ...

  5. Win64下编译OSG详细过程(Win10+VS2015+OSG3.6.3)

    目录 1. 数据资源准备 2. 编译第三方库 3. 编译GDAL 4. 编译OSG 1) CMAKE_INSTALL_PREFIX: 2) BUILD_OSG_EXAMPLES/BUILD_MFC_ ...

  6. springmvc重定向

    String success="07大吉大利25"; @RequestMapping("str") public String test1(){ return ...

  7. 外呼系统APP外呼软件手机电销软件拨号销售软件功能设计

    外呼系统APP外呼软件 1 系统概述 该软件系统设计功能主要为贷款.投资.资产管理等金融中介公司提供方便快捷的线上管理各类资源的一款应用软件工具. 可根据不同职位的账号登录APP来管理电话营销.客户签 ...

  8. Git常用简介

    Git是什么 git是目前最先进的分布式版本控制系统,它的核心架构如下图所示,分为四个核心区域.git的常用命令主要是关于这四个区域. 本地工作区-work 本地工作区就是我们实际电脑中的文件夹以及文 ...

  9. Git - git branch - 查看远端所有分支

    索引: 目录索引 一.示例: git branch -r 二.说明: 该命令将列出仓库中所有存在的远端分支,无论该分支是否已签出到本地. 蒙 2018-09-29 19:59 周六

  10. 在线修改redo日志大小

    注意点:1.redo要是能sesize的话就完美了2.drop时候如果active就得checkpoint才能drop3.物理删除旧redo文件redo大小影响切换,进而影响性能,至于什么样的业务设置 ...