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. dubbo+zookeeper的使用

    我们讨论过Nginx+tomcat组成的集群,这已经是非常灵活的集群技术,但是当我们的系统遇到更大的瓶颈,全部应用的单点服务器已经不能满足我们的需求,这时,我们要考虑另外一种,我们熟悉的内容,就是分布 ...

  2. 移动通信最先进的音频编解码器EVS及用好要做的工作

    语音通信从最初的只有有线通信变成后来的有线通信与无线通信(移动通信)的竞争,当移动语音通信价格下来后有线语音通信明显处于逆势.如今移动语音通信的竞争对手是OTT(On The Top)语音,OTT语音 ...

  3. C++解析头文件-Qt自动生成信号声明

    目录 一.瞎白话 二.背景 三.思路分析 四.代码讲解 1.类图 2.内存结构声明 3.QtHeaderDescription 4.私有函数讲解 五.分析结果 六.下载 一.瞎白话 时间过的ZTMK, ...

  4. Kubernetes集群部署史上最详细(一)Kubernetes集群安装

    适用部署结构以及版本 本系列中涉及的部署方式和脚本适用于1.13.x和1.14,而且采取的是二进制程序部署方式. 脚本支持的部署模式 最小部署模式 3台主机,1台为k8s的master角色,其余2台为 ...

  5. Android Aop日志

    Android在许多情况下需要知道一些方法的耗时,然后对与这些耗时进行一些处理和优化.当然我们可以在方法的开头和结尾分别来打一行日志来解决这个问题.但是这个方式侵入性强,而且比较难以修改和删除这些日志 ...

  6. sqlserver2012 在视图中建索引

      第一种 如果已经有视图但是要加索引只需要执行 以下SQL就好(前提是此视图必须                    绑定到架构) CREATE UNIQUE CLUSTERED INDEX in ...

  7. 2. [mmc subsystem] mmc core数据结构和宏定义说明

    一.host相关 1.struct mmc_host struct mmc_host是mmc core由host controller抽象出来的结构体,用于代表一个mmc host控制器. 数据结构如 ...

  8. 【普及篇】通信能力API及其前景分析

    ** 1.目前通信行业发展背景**运营商基础通信能力的价值逐渐提升进入数字化时代以来,信息产业正迎来新变革与新发展——网络信息技术与社会各领域全面深度融合,为工业制造.智慧城市等各行业赋能.运营商传统 ...

  9. 如何用人工的方式将Excel里的一堆数字变成一个数组

    目的是抛砖引玉,有谁可以教教我如何吧Excle的数据导入MyEclipse么? 如果只有⑨个字符的话我肯定是直接人工输入的,然而这次有65536行乘以3组,遭不住啊. 一.数组之间要有逗号在B列右键, ...

  10. python列表的交、并、差集

    #!/usr/bin/env python3 l1 = ['] l2 = ['] # 交集 result1 = [i for i in l1 if i in l2] result2 = list(se ...