Java_基础篇(数组排序)
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_基础篇(数组排序)的更多相关文章
- Java_基础篇(数组的反转)
数组反转也是Java的基础. 数组反转要求掌握的是: 1).创建一个数组,在内存中申请一块空间. 2).实例化数组. 3).对数组的了解.如:数组的长度,数组的下标,数组的表示方法. 4).数组的交换 ...
- Java_基础篇(杨辉三角)
对于刚刚学Java的同学来说,杨辉三角是一个很好的例子. 杨辉三角让初学者更好的理解数组的定义和更好地去运用数组,特别是二维数组. 除此之外,还让初学者更好的掌握嵌套语句的使用. 以下是我的杨辉三角J ...
- php基础篇-二维数组排序 array_multisort
原文:php基础篇-二维数组排序 array_multisort 对2维数组或者多维数组排序是常见的问题,在php中我们有个专门的多维数组排序函数,下面简单介绍下: array_multisort(a ...
- 【Java_多线程并发编程】基础篇——synchronized关键字
1. synchronized同步锁的原理 当我们调用某对象的synchronized方法或代码块时,就获取了该对象的同步锁.例如,synchronized(obj)就获取了“obj这个对象”的同步锁 ...
- 前端总结·基础篇·JS(二)数组深拷贝、去重以及字符串反序和数组(Array)
目录 这是<前端总结·基础篇·JS>系列的第二篇,主要总结一下JS数组的使用.技巧以及常用方法. 一.数组使用 1.1 定义数组 1.2 使用数组 1.3 类型检测 二.常用技巧 2.1 ...
- C#多线程之基础篇3
在上一篇C#多线程之基础篇2中,我们主要讲述了确定线程的状态.线程优先级.前台线程和后台线程以及向线程传递参数的知识,在这一篇中我们将讲述如何使用C#的lock关键字锁定线程.使用Monitor锁定线 ...
- 一步步学习javascript基础篇(0):开篇索引
索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...
- 2000条你应知的WPF小姿势 基础篇<15-21>
在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师,对C#和WPF有着极深的热情.最为出色的是他维护了两个博客:2,000Things You Should Know ...
- ABP框架实践基础篇之开发UI层
返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 说明 其实最开始写的,就是这个ABP框架实践基础篇.在写这篇博客之前,又回头复习了一下ABP框架的理论,如果你还没学习,请查看AB ...
随机推荐
- Vue 进阶之路(四)
之前的文章我们已经对 vue 有了初步认识,这篇文章我们通过一个例子说一下 vue 的样式绑定. 现在我们想要是想这样一个需求,页面上有个单词,当我们点击它的时候颜色变为红色,再点击一次变为原来的颜色 ...
- uni-app—从安装到卸载
uni-app实现了一套代码,同时运行到多个平台.支持iOS模拟器.Android模拟器.H5.微信开发者工具.支付宝小程序Studio.百度开发者工具.字节跳动开发者工具 工具安装 开发uni-ap ...
- EFCore动态切换Schema
最近做个分库分表项目,用到schema的切换感觉还是有些坑的,在此分享下. 先简要说下我们的分库分表 分库分表规则 我定的规则是,订单号(数字)除以16,得出的结果为这个订单所在的数据库,然后他的余数 ...
- C#语言介绍
C#(读作“See Sharp”)是一种简单易用的新式编程语言,不仅面向对象,还类型安全. C# 源于 C 语言系列,C.C++.Java 和 JavaScript 程序员很快就可以上手使用. C# ...
- 抽象工厂模式(Abstract Factory Pattern)
抽象工厂模式概述 定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类 抽象工厂抽象工厂,顾名思义,就是比工厂模式更抽象的工厂模式.在工厂模式中,一个具体工厂只负责生产一个具体产品 ...
- openlayers4 入门开发系列之地图工具栏篇(附源码下载)
前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...
- 用samba来创建windows下的文件共享
前言 Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的网络 ...
- windows之如何把文件夹转换成iso文件
(1)oscdimg下载路径: 链接:https://pan.baidu.com/s/1U_SfamsOvI2nav9odAzujQ提取码:21fr (2)以管理员身份运行cmd命令: Oscdimg ...
- LeetCode算法题-Rotated Digits(Java实现)
这是悦乐书的第316次更新,第337篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第185题(顺位题号是788).如果一个数字经过180度旋转后,变成了一个与原数字不同的 ...
- 将博客搬至CSDN https://blog.csdn.net/Fredric_2014
将博客搬至CSDN https://blog.csdn.net/Fredric_2014