十七、Java中数组常见的几种排序方法!
转载自:https://www.cnblogs.com/bekeyuan123/p/6891875.html
数组的定义:
// 3种定义方式
int[] arr = new int[5]; int[] arr1 = {1,2,3,4,5}; int[] nums = new int[]{1, 2, 3}; long[] arr2 = new long[6]; String[] strs = new String[5]; // 数组可以存储引用类型
Person[] ps = new Person[5];
数组的操作: int[] arr = {45, 34, 53, 43};
// 默认升序排序
Arrays.sort(arr);
System.out.println(Arrays.toString(arr)); // 二分搜索法(使用之前需要先使用Arrays.sort()排序),如果没有找到数字,返回为负数;返回正数,代表数字在数组中的索引
int i = Arrays.binarySearch(arr, 34);
System.out.println(i);
// Arrays.copyOf()底层实现是System.arraycopy();
int[] newArr = Arrays.copyOf(arr, 7); // copyOfRange()方法第三个参数是索引值,包左不包右
int[] newArr1 = Arrays.copyOfRange(arr, 1, 3);
System.out.println(Arrays.toString(newArr));
System.out.println(Arrays.toString(newArr1));
// binarySearch()方法第三个参数是索引值,包左不包右
int j = Arrays.binarySearch(arr, 1, 3, 34);
System.out.println(j);
冒泡排序:
int[] arr = {23,12,48,56,45};
int temp = -1;
for(int i=0;i<arr.length;i++) {
for(int j=i+1;j<arr.length;j++) {
if(arr[i]>arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
直接选择排序:
int[] arr = {23,12,48,56,45};
for(int i=0;i<arr.length;i++) {
int tem = i;
// 每一趟的比较都把最小的一个数字的索引找到
for(int j=i;j<arr.length;j++) {
if(arr[j] < arr[tem]) {
tem = j;
}
}
int temp1 = arr[i];
arr[i] = arr[tem];
arr[tem] = temp1;
}
System.out.println(Arrays.toString(arr));
反转排序:
int[] arr = {23,12,48,56,45};
for(int i=0;i<arr.length / 2;i++) {
int temp = arr[i];
arr[i] = arr[arr.length-i-1];
arr[arr.length-i-1] = temp;
}
System.out.println(Arrays.toString(arr))
十七、Java中数组常见的几种排序方法!的更多相关文章
- java中数组复制的两种方式
在java中数组复制有两种方式: 一:System.arraycopy(原数组,开始copy的下标,存放copy内容的数组,开始存放的下标,需要copy的长度); 这个方法需要先创建一个空的存放cop ...
- Java中数组转为List三种情况的优劣对比,常犯的类型转换错误原因解析
一.最常见方式(未必最佳)通过 Arrays.asList(strArray) 方式,将数组转换List后,不能对List增删,只能查改,否则抛异常. 关键代码:List list = Arrays. ...
- Java中数组复制的几种方式以及数组合并
1.Object.clone() 简单直接,只能对源数组完整地复制 2.Arrays.copyOf(T[] original, int newLength) 可以只复制源数组中部分元素,但复制的起始位 ...
- c语言常见的几种排序方法总结
一:选择排序和冒泡排序 这两种排序比较简单,直接贴出代码: #include <stdio.h> void choose_sort(int *arr, int n); void bubbl ...
- Javarscipt中数组或者字符串的随机排序方法
在日常开发中,经常会遇到随机排序的需求,思路就是利用Math.random()方法,抽取随机数,让数组中的元素进行对调: 话不多说直接上代码,方法一:基本思路就是将a中随机抽取一个元素,放入b中,再从 ...
- java 遍历数组常见的3种方式
1.for循环,最常见 2.利用foreach 3.利用jdk自带的方法 --> java.util.Arrays.toString()
- Java中数组复制的几种方法
/** * @author zhengbinMac */ public class Test { public static void main(String[] args) { int[] arra ...
- java中最常见的几种运行时异常,你get了吗?
NullPointerException (空指针异常) ClassCastException (类型强制转换异常) NumberFormatException (数字格式异常) NegativeAr ...
- Java中数组定义的三种方式
方法一: 1.先声明 2.分配空间 3.赋值 public class arr{ public static void main(String[] args){ int[] arr; //先声明 ar ...
随机推荐
- Java之框架Spring(一)
1. Spring是什么? Spring是一个开源框架 Spring为简化企业级应用而生.可以实现以前只有EJB才能实现的功能 Spring是一个IOC(DI)和AOP容器框架 具体描述:轻量级:Sp ...
- Flask--WTForms
简介 WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证. 安装:pip3 install wtforms 用户登录注册示例 1. 用户登录 当用户登录时候,需要对用 ...
- 七层协议&网络配置
1.输入CMD 2.ipconfig-all 可查看详细的电脑网络配置,子网掩码(subnet mask)又叫网络掩码.地址掩码.子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网 ...
- Vue stage3
<body> <div id="box1"> <div v-bind:class="{ 'active': isActive, 'error ...
- Redis基础用法、高级特性与性能调优以及缓存穿透等分析
一.Redis介绍 Redis是一个开源的,基于内存的结构化数据存储媒介,可以作为数据库.缓存服务或消息服务使用.Redis支持多种数据结构,包括字符串.哈希表.链表.集合.有序集合.位图.Hype ...
- RocketMQ入门(生产者)_2
从 RocketMQ环境搭建_1 我们已经建立了MQ的Server,接下来就是简单的生产和消费的过程. 1. rocketMQ的源码中有个示例代码example ,我们从Apache官网中可以下载源 ...
- SSIS: 如何通过SSIS的Foreach Loop Container导入Excel的多个Sheet
通常都有这样一个习惯就是按月存放我们的一些数据,一个月份一个work sheet,他们具有相同的行列组合,假设有下面这样一个Excel,每页结构如下,共有四页,每页为一个季度 那么我们需要做的是: 1 ...
- 使用==操作符比较命令行参数args[0]和字符串返回“Invalid type"
运行程序接收一个来自命令行的字符串参数(取值1,2,3,4),根据参数执行对应语句块. 由于未能判断字符串内容是否相同导致代码if语句块代码失效,怎么也看不到schedule方法的效果, 以下是错误代 ...
- 面试必备:ArrayList源码解析(JDK8)
面试必备:ArrayList源码解析(JDK8) https://blog.csdn.net/zxt0601/article/details/77281231 概述很久没有写博客了,准确的说17年以来 ...
- Nagios监控
1.Nagios监控软件 Nagios是一款开源的免费网络监视工具,能有效监控Windows.Linux和Unix的主机状态,交换机路由器等网络设置,打印机等.在系统或服务状态异常时发出邮件或短信报警 ...