Java数组排序基础算法,二维数组,排序时间计算,随机数产生-阿里云开发者社区

开发者社区> morixinguan> 正文

Java数组排序基础算法,二维数组,排序时间计算,随机数产生

简介: import java.util.Arrays; //包含Arrays import java.util.Random; public class HelloWorld { public static void main(String[] args){ // Scanner s = new Scanner(System.
+关注继续查看
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();
		}
		
	}
}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
NOIP-C++大神培养计划 Step1.1.2基础算法——模拟算法2
大家好,我是小笨笨,今天我们继续来讲解模拟算法。 我们直接上例题! 栗1.1.2-1 洛谷P1014 Cantor表https://www.luogu.org/problemnew/show/P1014题目描述现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。
987 0
【阿里云新品发布·周刊】第3期:零算法基础快速训练稳定、高效的AI模型
将你想了解的,新产品、新版本、新技术、新功能、价格调整,评论在下方,下期更新!
9031 0
冰与火之歌:「时间」与「空间」复杂度 | 算法必看系列三十六
对于一个算法,其时间复杂度和空间复杂度往往是相互影响的。当追求一个较好的时间复杂度时,可能会使空间复杂度的性能变差,即可能导致占用较多的存储空间; 反之,求一个较好的空间复杂度时,可能会使时间复杂度的性能变差,即可能导致占用较长的运行时间。另外,算法的所有性能之间都存在着或多或少的相互影响。因此,当设计一个算法(特别是大型算法)时,要综合考虑算法的各项性能,算法的使用频率,算法处理的数据量的大小,算法描述语言的特性,算法运行的机器系统环境等各方面因素,才能够设计出比较好的算法。
2253 0
计算页面执行时间的两种方法
使用php计算页面执行时间,例如很多查询类的页面都是需要统计页面执行了多少时间, 例如百度谷歌都有查询了多少秒等等,现在提供一种php写的计算方法 /** * 得到当前时间 */ function getMicrotime() { list ($usec, $sec) = expl...
642 0
javascript 一个关于时间排序的算法(一个页面多个倒计时排序)
上周要做一个活动页面 秒杀列表页 需要一个时间的算法排序 自己琢磨了半天想了各种算法也没搞出来,后来问了下一个后台的php同学 他写了个算法给我看了下 ,刚开始看的时候觉得这就是个纯算法,不能转化成页面的dom效果,可是再看了两遍发现可以 于是我就改了改 实现了 不禁感叹 确实蛮赞的 于是就博一客;...
852 0
深入字节码 -- 计算方法执行时间
java程序通过javac编译之后生成文件.class就是字节码集合,正是有这样一种中间码(字节码),使得scala/groovy/clojure等函数语言只用实现一个编译器即可运行在JVM上。
3324 0
2014秋C++第14周项目1参考-折腾二维数组
课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。  【项目1-折腾二维数组】创建一个5行4列的二维整型数组,通过初始化,为数组中的前两列的10个元素赋初值,然后: 通过键盘输入,使后两列的10个元素获得值; 按行序优先输出数组元素; 将所有元素值
990 0
NOIP-C++大神培养计划Step1.1.1基础算法——模拟算法1
模拟算法,可以说是最基础的算法了。它的基本定义没太多意思:就是去模拟题目的要求。题意要你怎么做,你就怎么做,看懂了题目,基本上就会做了。 举一个大家耳熟能详的栗子。 A+B Problem给定两个整数A和B,输出他们的和。
1244 0
+关注
morixinguan
ITGEGE在线教育嵌入式开发讲师。 CSDN博客专家、CSDN-Linux特邀编辑、CSDN博乐、CSDN学院讲师,目前从事嵌入式开发领域,从事与单片机,Linux,android相关的产品开发。
499
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载