Java数组排序基础算法,二维数组,排序时间计算,随机数产生
import java.util.Arrays; //包含Arrays
import java.util.Random;
public class HelloWorld {
public static void main(String[] args){
// Scanner s = new Scanner(System.in);
// System.out.println("请输入一个数字");
// int num = s.nextInt();
//打印数组
int []a = {10,14,2,3,9,87} ;
sort(a);
System.out.println(Arrays.toString(a));
a = insertValue(a,15);
System.out.println(Arrays.toString(a));
int []b = {2,34,87,1,2,77,8,56,2} ;
insertsort(b);
System.out.println(Arrays.toString(b)) ;
/////////////////////////////////////////
//数组中自带的API排序接口
int []c = {11,20,8,48,45,23,14} ;
Arrays.sort(c);//调用sort方法,jdk自带,非常高效的算法
System.out.println(Arrays.toString(c)) ;
int []d = new int[1000000];
for(int i = 0 ; i < d.length ;i++){
Random r = new Random();
d[i] = r.nextInt();//获取一个随机的整数
}
long start = System.currentTimeMillis() ;//获取当前的时间到1970开始时间相差的毫秒
Arrays.sort(d); //对随机产生数组的元素进行排序,性能最好,运行最快
//insertsort(d);
//sort(d)
long end = System.currentTimeMillis();
System.out.println(end-start);//计算当前排序花费的时间
//二维数组
Two_array();
}
//选择排序算法
//跟三个数交换是同样的原理
public static void sort(int []a){
for(int i = 0 ; i < a.length - 1 ; i++){
for(int j = i + 1 ; j < a.length ; j++){
if(a[i] > a[j]){
int temp = a[i] ;
a[i] = a[j] ;
a[j] = temp ;
}
}
}
}
/*
* a[0]和a[1]比较如果大则交换---->a[0]和a[1]中大的放入了a[1]
* a[1]和a[2]比较如果大则交换---->a[0],a[1],[2]中大的放入了a[2]
* a[2]和a[3]比较如果大则交换
* .....
* a[4]和a[5]比较如果大则交换---->最大的放入了a[5] ;
* -------------------------------第一轮
* a[0]和a[1],a[1]和a[2],a[2]和a[3],a[3]和a[4]------第二轮
*
* ...最后一轮a[0]和a[1]比较
*/
//冒泡排序算法
public static void sort1(int []a){
for(int i = 0 ; i < a.length-1 ; i++){
for(int j = 0 ; j < a.length - 1 - i ; j++){
if(a[j] > a[j+1]){
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp ;
}
}
}
}
//插入一个数以后自动排序--->一个已经排好序的数组,插入一个新元素
public static int[] insertValue(int []a , int value){
//从最后一个元素开始和value进行比较,如果比value大,这些元素都后移
//一直到value大于数组的某个元素,那么说明value就应该放在这个元素之后
a = Arrays.copyOf(a, a.length+1);
//因为前面扩容了,最后一个元素为空,要最后一个元素的前一个才是
for(int i = a.length - 2 ; i >= 0 ; i--){
if(value < a[i])
a[i+1] = a[i] ; //后移动
else
break ;
a[i+1] = value ;
}
return a ;
}
/**
* a[0]作为基本量,拿出a[1]进行插入工作 a[0]和a[1]已经排好序了
* a[0],a[1]作为基本量 拿出a[2]进行插入工作 a[0],a[1],a[2]已经排好序了
* .....依次类推
*/
//插入排序
public static void insertsort(int []a){
int t , j;
for(int i = 1 ; i < a.length ; i++){
t = a[i];
for(j = i-1 ; j >= 0 && t < a[j]; j--){
a[j+1] = a[j] ;
}
}
}
public static void Two_array()
{
int [][] a = {
{1,2,3,4,5},
{6,7,8,9,10},
{5,9,7,8,3},
};
int [][]b = new int[][]{{1,2,3},{4,5,6}};
System.out.println(a.length);
/*
* a中有三个一维数组
* 第一个a[0]
* ......a[1]
* */
//二维数组中第二个一维数组的元素的长度
System.out.println(a[1].length);
//遍历第二个一维数组的长度
for(int i = 0 ; i < a[1].length ; i++){
System.out.print(a[1][i] + " ");
}
System.out.println();
/*遍历二维数组中所有的元素*/
for(int i = 0 ; i < a.length ;i++){
for(int j = 0 ; j < a[1].length ; j++){
System.out.print(a[i][j]+" ") ;
}
System.out.println();
}
}
}
Java数组排序基础算法,二维数组,排序时间计算,随机数产生的更多相关文章
- python3--算法基础:二维数组转90度
python3--算法基础:二维数组转90度 [0, 1, 2, 3][0, 1, 2, 3][0, 1, 2, 3][0, 1, 2, 3] 二维数组转90度 [0, 0, 0, 0][1, 1, ...
- java怎么定义一个二维数组?
java中使用 [][] 来定义二维数组 定义数组时也可同时初始化下面是一些例子float[][] numthree; //定义一个float类型的2维数组numthree=new float[5][ ...
- java基础编程——二维数组中的查找
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
- Java基础之二维数组的回顾
class ArrayWork { /* * 二维数组的复习! * * 2014年4月2日 21:45:50 * * * **/ public static void main(String[] ar ...
- java基础之二维数组-杨辉三角
首先呢你要知道什么是杨辉三角? 答:杨辉三角,是二项式系数在三角形中的一种几何排列. 简单的说一下就是两个未知数和的幂次方运算后的系数问题,比如(x+y)的平方=x的平方+2xy+y的平方,这样系数就 ...
- Java基础教程——二维数组
二维数组 Java里的二维数组其实是数组的数组,即每个数组元素都是一个数组. 每个数组的长度不要求一致,但最好一致. // 同样有两种风格的定义方法 int[][] _arr21_推荐 = { { 1 ...
- Java基础(7):二维数组初始化时需要注意的问题
二维数组可以先指定行,再指定列:但不能先指定列,再指定行 没有说明二维数组的行的个数,在定义二维数组时也可以只指定行的个数,然后再为每一行分别指定列的个数.如果每行的列数不同,则创建的是不规则的二维数 ...
- java基础之二维数组不定义列数
有一种特殊的二维数组,它的行数确定,但是每行的列数不确定.这样的的数组实现方法:先创建制定行数,列数缺省的二维数组,然后对数组的每一行重新初始化.举例如下: package day5; //第二种定义 ...
- python-Day4-迭代器-yield异步处理--装饰器--斐波那契--递归--二分算法--二维数组旋转90度--正则表达式
本节大纲 迭代器&生成器 装饰器 基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - ...
随机推荐
- jieba库分词统计
代码在github网站,https://github.com/chaigee/chaigee,中的z3.py文件 py.txt为团队中文简介文件 代码运行后词频统计使用xlwt库将数据发送到excel ...
- angular 路由的引用
使用angular路由 遇到的坑. 使用cmd 安装好node.js 安装成功 输入node -v 能查看版本说明安装成功 搭建angular项目输入命令 npm install -g angu ...
- log4j日志的基本使用方法(1)——概述、配置文件
一.概述 Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式.日志信息的优先级从高到低有ERROR.WARN.INFO.DEBUG,分别用来指定这条日志信息的重 ...
- ubuntu14.04拼音输入法问题的解决方法
14.04的自带的拼音输入法,打字的时候你会发现有很大的问题,打不出来一个完整的字. 解决方法: ibus-daemon -drx //重启ibus进程 在终端里输一次这个命令就ok了. 或者装个 ...
- jQuery CSS 类
通过 jQuery,可以很容易地对 CSS 元素进行操作. jQuery 操作 CSS jQuery 拥有若干进行 CSS 操作的方法.我们将学习下面这些: addClass() - 向被选元素添加一 ...
- Nginx之(三)Nginx配置
一个简单的配置文件如下: #定义Nginx运行的用户及用户组 user userName userGroupName; #工作进程数目,根据硬件调整,通常等于CPU数量或者2倍于CPU worker_ ...
- 建立自己的git服务器
需求情景 就像金山快盘同步盘那样, 在开发环境windows 10和部署环境Ubuntu server 14.04之间建立同步关系.比如windows端多了一个a.txt文件,你推送后,Ubuntu端 ...
- Android音频焦点处理相关的方法
有这么一种场景:你打开qq音乐.优酷客户端.视频播放的时候.这个时候突然来电显示了,此时所有的MediaPlayer相关的服务或者响应都进入"休眠"状态.那么,这个功能是怎么实现的 ...
- Linux内核中的有关Page的算法
static inline int get_order(unsigned long size) { int order; size = (size-1) >> (PAGE_SHIFT-1) ...
- 剑指Offer——“你最大的缺点是什么”回答技巧及范例
剑指Offer--"你最大的缺点是什么"回答技巧及范例 问题分析:认识自己的缺点是一个巨大的优点, 当HR问到你缺点的时候, 你的机会来了, 请快展示你的自知之明吧!你想把优点 ...