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. CountDownLatch和CyclicBarrier 区别

    CountDownLatch : 一个线程(或者多个), 等待另外N个线程完成某个事情之后才能执行. CyclicBarrier        : N个线程相互等待,任何一个线程完成之前,所有的线程都 ...

  2. MIP 与 AMP 合作进展(3月7日)

    "到目前为止,全网通过 MIP 校验的网页已超10亿.除了代码和缓存, MIP 还想做更多来改善用户体验移动页面." 3月7日,MIP 项目负责人在首次 AMP CONF 上发言. ...

  3. 新手学习WEB前端流程以及学习中常见的误区

    学习web前端编程技术肯定是以就业拿到高薪工作为主要目的的,可是高薪不会那么轻易拿到,这是一个最简单的道理.没有付出就没有回报,在整个学习web前端编程技术的过程中,你需要付出时间.精力.金钱.废话不 ...

  4. Hive的原理

    阅读目录 一.Hive内部表和外部表 1.Hive的create创建表的时候,选择的创建方式: - create table - create external table 2.特点: ● 在导入数据 ...

  5. ioremap_nocache() 函数的使用【转】

    本篇文章主要是在ioremap_nocache函数说明的基础上进行整理,加入该函数的用法简介. 函数原型 void __iomem * ioremap_nocache (unsigned long o ...

  6. 【English Teradata】Strategizing Vantage Technology

    strategy部署;谋略;战略[ˈstrætədʒi]  strategize制定战略 Strategizing战略化  Technology科技;工艺;工程技术 [tekˈnɑːlədʒi] St ...

  7. CYQ.Data 对于分布式缓存Redis、MemCache高可用的改进及性能测试

    背景: 随着.NET Core 在 Linux 下的热动,相信动不动就要分布式或集群的应用的需求,会慢慢火起来. 所以这段时间一直在研究和思考分布式集群的问题,同时也在思考把几个框架的思维相对提升到这 ...

  8. 一份.NET 容器化的调查小结

    小编在上个月在微信公众号"dotnet跨平台" 做了一个针对.NET 容器化的调查:https://mp.weixin.qq.com/s/oszbuIORT0G8XLLgMZzkn ...

  9. Devops step by step

    接着上次分享的devops历程[Followme Devops实践之路], 大家希望能够出一个step by step手册, 那今天我就来和手把手来一起搭建这么一套环境, 演示整个过程! 实验环境需要 ...

  10. 聊聊如何正确向Compute Shader传递数组

    0x00 前言 前一段时间去英国出差,发现Unity Brighton 办公室的手绘地图墙很漂亮,在这里分享给大家. 在这篇文章中,我们选择了过去几周Unity官方社区交流群以及UUG社区群中比较有代 ...