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 ...
随机推荐
- 判断decimal 是否为整数
用了半个小时搞懂了这个问题,基础愁死我了! private static boolean isIntegerValue(BigDecimal decimalVal) { return decimalV ...
- jdk源码阅读笔记-HashSet
通过阅读源码发现,HashSet底层的实现源码其实就是调用HashMap的方法实现的,所以如果你阅读过HashMap或对HashMap比较熟悉的话,那么阅读HashSet就很轻松,也很容易理解了.我之 ...
- Typora程序员的记事本.Typora常用快捷操作
Typora常用快捷操作 1.文本格式快捷编写 1.1.文本段落编写 a)#→宫格建→加输入内容→回车键,其中#表示标题一,##表示标题二以此类推至######为止 b)或者选中要修改文本的文本格式按 ...
- HIVE扩展GIS函数
按项目日益增长的gis数据量要求,需要在大数据集群中部署HIVE的扩展函数. Apache Hive是一个建立在Hadoop架构之上的数据仓库.它能够提供数据的精炼,查询和分析.([引 ...
- office365的开发者训练营,免费,在微软广州举办
本活动在微软官网的地址: https://www.microsoft.com/china/events/detail_1707 先上活动内容: Office 365每月有超过1亿的商业活跃用户 ...
- SQLServer之创建数据库架构
创建数据库架构注意事项 包含 CREATE SCHEMA AUTHORIZATION 但未指定名称的语句仅允许用于向后兼容性. 该语句未引起错误,但未创建一个架构. CREATE SCHEMA 可以在 ...
- July 07th. 2018, Week 27th. Saturday
Soon is not as good as now. 别谈未来,现在就行动. From Seth Godin. I always told myself that I should finish w ...
- python3 集合 操作方法
今天都是课, 就学这么点 不多说 睡觉睡觉!!! #!usr/bin/env/ python # -*- coding:utf-8 -*- # Author:XiaoFeng list = [1,2 ...
- docker 发布到私有docker registry
1.使用vs发布项目到文件夹: 2.在文件夹中新建dockerfile文件, 内容: FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-sli ...
- 理解Linux文档的默认安全机制、隐藏属性、特殊权限,妈妈在也不用担心你从删库到跑路!!!
写在前面 前面的章节 详解Linux文档属性.拥有者.群组.权限.差异,介绍了文档的基本权限,包括读写执行(r,w,x),还有文档若干的属性,包括是否为目录(d).文件(-).链接文件(l).拥有者. ...