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数组排序基础算法,二维数组,排序时间计算,随机数产生的更多相关文章

  1. 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, ...

  2. java怎么定义一个二维数组?

    java中使用 [][] 来定义二维数组 定义数组时也可同时初始化下面是一些例子float[][] numthree; //定义一个float类型的2维数组numthree=new float[5][ ...

  3. java基础编程——二维数组中的查找

    题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...

  4. Java基础之二维数组的回顾

    class ArrayWork { /* * 二维数组的复习! * * 2014年4月2日 21:45:50 * * * **/ public static void main(String[] ar ...

  5. java基础之二维数组-杨辉三角

    首先呢你要知道什么是杨辉三角? 答:杨辉三角,是二项式系数在三角形中的一种几何排列. 简单的说一下就是两个未知数和的幂次方运算后的系数问题,比如(x+y)的平方=x的平方+2xy+y的平方,这样系数就 ...

  6. Java基础教程——二维数组

    二维数组 Java里的二维数组其实是数组的数组,即每个数组元素都是一个数组. 每个数组的长度不要求一致,但最好一致. // 同样有两种风格的定义方法 int[][] _arr21_推荐 = { { 1 ...

  7. Java基础(7):二维数组初始化时需要注意的问题

    二维数组可以先指定行,再指定列:但不能先指定列,再指定行 没有说明二维数组的行的个数,在定义二维数组时也可以只指定行的个数,然后再为每一行分别指定列的个数.如果每行的列数不同,则创建的是不规则的二维数 ...

  8. java基础之二维数组不定义列数

    有一种特殊的二维数组,它的行数确定,但是每行的列数不确定.这样的的数组实现方法:先创建制定行数,列数缺省的二维数组,然后对数组的每一行重新初始化.举例如下: package day5; //第二种定义 ...

  9. python-Day4-迭代器-yield异步处理--装饰器--斐波那契--递归--二分算法--二维数组旋转90度--正则表达式

    本节大纲 迭代器&生成器 装饰器  基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - ...

随机推荐

  1. Tomcat性能调优-JVM监控与调优

    参数设置 在Java虚拟机的参数中,有3种表示方法用"ps -ef |grep "java"命令,可以得到当前Java进程的所有启动参数和配置参数: 标准参数(-),所有 ...

  2. aways on 配置部署(一)——准备工作

    sqlserver的aways on 配置需要经历三个步骤,前面两个步骤是对aways on 配置的一个准备步骤. 经过了一个星期的研究,终于成功的完成了前两个步骤,期间参考了很多的资料和博客,总感觉 ...

  3. 关于Application_End 与 Application_Start事件触发情况的测试(待续)

    测试项目搭建 定义一个简单的Mvc项目,有如下文件: (1) public class Startup { public void Configuration(IAppBuilder app) { a ...

  4. acm几何

    fzu 2231,N个点求构成的平行四边行个数. 题意简重点在优化上 #include <cstdio> #include <iostream> #include <cs ...

  5. Java语言程序设计-Markdown格式作业模板

    Markdown格式作业模板如下,大家可以直接复制粘贴使用. 注意:作业中不能只写答案,题目本身也要出现.. # 1. 本章学习总结 你对于本章知识的学习总结 # 2. 书面作业 **Q1 java ...

  6. android Git命令家底儿及Git数据通信原理详解

    声明:本文为CSDN原创投稿文章,未经许可,禁止任何形式的转载. 现在大部分使用的都是SVN,也有一部分迁移了Git,虽然挺好的,不过还有其它很多版本控制的工具,并没有谁最好用,最重要的是适合自己的公 ...

  7. 解决HTML外部引用CSS文件不生效问题

    作为一个前端小白,鼓捣了几天前端..今天突然发现我深信不疑的东西,竟然出现了问题..就比如我在css目录下面写了一个css样式文档:style.css.这时里面只有一句话: body { backgr ...

  8. Android快速关联V4包的方式

    很多时候需要管理v4包,当然有很多种办法去关联.本人觉得最快速的方式,是通过添加配置文件的方式.只需要ctrl+c和ctrll+v就能解决了 方法如下: 1.新建一个android-support-v ...

  9. 学习Android路上的一些感慨和总结,慢慢来,比较快!

    学习Android路上的一些感慨和总结,慢慢来,比较快! 一直想对自己的学习路程做一个总结,来告别某一个阶段的过去,迎接某一个阶段的来临,一直抽不出时间来,于是零零散散的写了点-,到现在,也已经积攒了 ...

  10. Android基于Retrofit2.0 +RxJava 封装的超好用的RetrofitClient工具类(六)

    csdn :码小白 原文地址: http://blog.csdn.net/sk719887916/article/details/51958010 RetrofitClient 基于Retrofit2 ...