JAVA-基本元素使用(随机数,数组,排序)

JAVA中也不能淡化基本功能啊.

随机数: 点击打开链接

1.

包 java.lang.Math.Random; 静态方法Math.Random() 返回一个0.0~1.0的double

2.

包 java.util.Random; 一个类

Random()的两种构造方法:

Random():创建一个新的随机数生成器。

Random(long seed):使用单个 long 种子创建一个新的随机数生成器。

生成[0,1.0)区间的小数:double d1 = r.nextDouble();

生成[0,5.0)区间的小数:double d2 = r.nextDouble() * 5;

生成[1,2.5)区间的小数:double d3 = r.nextDouble() * 1.5 + 1;

生成-231到231-1之间的整数:int n = r.nextInt();

生成[0,10)区间的整数:int n2 = r.nextInt(10);

数组: 点击打开链接

1.

Java中的每个数组都有一个名为length的属性,表示数组的长度。

length属性是public final int的,即length是只读的。数组长度一旦确定,就不能改变大小。

2.

不能直接使用equals函数,因为这个默认仍是比较是否为同一对象.

3.

数组元素不为基本原生数据类型时,存放的是引用类型,而不是对象本身。当生成对象之后,引用才指向对象,否则引用为null

Type []a=Type [2];  a[0]=new Type(); a[1]=new Type();

4.

二维变长数组

<span style="font-family:SimSun;font-size:12px;">public class ArrayTest4
{
    public static void main(String[] args)
    {
        //二维变长数组
        int[][] a = new int[3][];
        a[0] = new int[2];
        a[1] = new int[3];
        a[2] = new int[1];

        //Error: 不能空缺第一维大小
        //int[][] b = new int[][3];
    }
}</span>

排序:

如果用C++的STL 直接sort搞定

对于基本数组 Arrays.sort(a);  反序 Arrays.sort(strArray, Collections.reverseOrder());

忽略大小写:Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER);

如果要对一个对象数组排序,则要自己实现java.util.Comparator接口.

比较器 要重写Comparator接口中compare方法
import java.io.*;
import java.net.*;
import java.util.*;
public class Test{
 public static void main(String args[]) throws Exception{
  TreeMap<String,Integer> mm=new TreeMap<String,Integer>(new Comparator(){
   public int compare(Object a,Object b){
    String aa=(String)a;
    String bb=(String)b;
    return bb.compareTo(aa);
   }
  });
  mm.put(new String("a"),new Integer(23));
  mm.put("b",new Integer(31));
  Set<Map.Entry<String,Integer>> set=mm.entrySet();
  System.out.println (set);
  System.out.println (mm.keySet());
 }
}

附上快排与堆排的代码:

import java.util.Arrays;
import java.util.Collections;
import java.math.*;

public class Test {
	static int N=100;
	static int [] a=new int[N];
	static int [] b=new int[N];
	static int [] c=new int[N];
	public static void qsort(int []a,int low ,int high){
		if(low>=high) return;
		int l =low,h=high;
		int t=a[l];
		while(l<h){
			while(l<h && t<=a[h]) h--;
			a[l]=a[h];
			while(l<h && t>=a[l]) l++;
			a[h]=a[l];
		}
		a[l]=t;
		qsort(a,low,l-1);
		qsort(a,l+1,high);
	}
	public static void heapadjust(int [] a,int low,int n){
		int s=a[low];
		for(int i=low*2;i<=n;i*=2){
			if(i<n && a[i]<a[i+1]) i++;
			if(s>=a[i]) break;
			a[low]=a[i];
			low=i;
		}
		a[low]=s;
	}
	public static void Heap(int [] a,int n){
		for(int i = n/2;i>=0;i--)
			heapadjust(a,i,n);
		for(int i = 0;i<=n;i++){
			int t =a[0];
			a[0]=a[n-i];
			a[n-i]=t;
			heapadjust(a,0,n-i-1);
		}
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		for(int i = 0;i<N;i++)
			c[i]=b[i]=a[i]=(int)(Math.random()*10000);
		qsort(a,0,N-1);
		Heap(b,N-1);
		for(int i = 0;i<N;i++)
			System.out.print(a[i]+" ");
		System.out.println();
		for(int i = 0;i<N;i++)
			System.out.print(b[i]+" ");
		System.out.println();
		Arrays.sort(c);
		for(int i = 0;i<N;i++)
			System.out.print(c[i]+" ");

	}
}
时间: 2024-10-07 15:29:53

JAVA-基本元素使用(随机数,数组,排序)的相关文章

Java常用三种算法排序比较

Java常用三种算法排序比较 冒泡排序: package demo1; /** * * @author xiaoye 2014-5-13 */ /** * 有N 个数据需要排序,则从第0 个数开始,依次比较第0 和第1 个数据, * 如果第0 个大于第1 个则两者交换,否则什么动作都不做,继续比较第 1 个第2个-, * 这样依次类推,直至所有数据都"冒泡"到数据顶上. 冒泡排序的效率 O(N*N ),比较 N*N/2 ,交换N*N/4 . */ public class Bubble

java如何产生随机数

一.java如何产生随机数? 1.打开eclipse 2.新建java项目,例如取名为“suijishu”点击完成 3.新建一个类进行测试 4.首先要在头部插入一个包 输入import java.util.Random; 5.输入代码: public static int suiji = new Random().nextInt(10); public static void main(String[] args) { System.out.print(suiji); } 其中,public s

随机函数Math.random()_随机数,随机排序

Math.random() 返回0到1之间的随机数(小数) 如:0.6417997585228452 通过Math.random()和sort函数可实现数组的随机排序,代码如下: 1 arr.sort(function( a, b ){ 2 return Math.random() - 0.5; 3 }); 4 5 alert( arr ); //8,7,4,3,2,1,5,6 总结产生随机数的公式: x ~ y 产生x到y之间的随机整数Math.round( Math.random()*(y-

Perl 哈希、数组 排序

写在前面: 1. 注意use warnings; 后,定义变量前加my 2. 此文转载其他文章,代码修改,适合新版本perl (一) sort函数sort LISTsort BLOCK LISTsort SUBNAME LISTsort的用法有如上3种形式.它对LIST进行排序,并返回排序后的列表.假如忽略了SUBNAME或BLOCK,sort按标准字串比较顺序来进行(例如ASCII顺序).如果指定了SUBNAME,它实际上是个子函数的名字,该子函数对比2个列表元素,并返回一个小于,等于,或大于

java自学篇之数组1

第四章 数组与方法 若想要存放一连串相关的数据,使用数组是个相当好用的选择.此外,如果某个程序片段经常反复出现,那么将它定义成一个方法可以有效地简化程序代码. 数组是由一组相同类型的变量所组成的数据类型,它们以一个共同的名称表示. 一维数组 一维数组可以存放上千万个数据,并且这些数据的数据类型相同. 一维数组的声明和内存存储 一维数组的声明和内存的分配 数据类型数组名[ ] :         // 声明一维数组 数组名 = new 数据类型[个数] : // 分配内存给数组 数组的数据类型和变

java Collections.sort()实现List排序的默认方法和自定义方法

1.java提供的默认list排序方法 主要代码: List<String> list = new ArrayList();list.add("刘媛媛"); list.add("王硕");list.add("李明");list.add("刘迪");list.add("刘布"); //升序Collections.sort(list,Collator.getInstance(java.util.Lo

随机数数组输出及求和

问题描述: 随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中. 设计思路: 使用java.util中的Random类来获取随机数,存入数组后,定义一个String类的对象result,利用for循环存储要输出的数组内容到result并且求和:再利用javax.swing中的JoptionPane类创建消息框进行结果输出. 源代码: 1 import java.util.*; 2 import javax.swing.*; 3 public c

Java常用的7大排序算法汇总(转载)

这段时间闲了下来,就抽了点时间总结了下java中常用的七大排序算法,希望以后可以回顾! 1.插入排序算法 插入排序的基本思想是在遍历数组的过程中,假设在序号 i 之前的元素即 [0..i-1] 都已经排好序,本趟需要找到 i 对应的元素 x 的正确位置 k ,并且在寻找这个位置 k 的过程中逐个将比较过的元素往后移一位,为元素 x “腾位置”,最后将 k 对应的元素值赋为 x ,一般情况下,插入排序的时间复杂度和空间复杂度分别为 O(n2 ) 和 O(1). /** * @param int[]

java常用的7大排序算法汇总

这段时间闲了下来,就抽了点时间总结了下java中常用的七大排序算法,希望以后可以回顾! 1.插入排序算法 插入排序的基本思想是在遍历数组的过程中,假设在序号 i 之前的元素即 [0..i-1] 都已经排好序,本趟需要找到 i 对应的元素 x 的正确位置 k ,并且在寻找这个位置 k 的过程中逐个将比较过的元素往后移一位,为元素 x "腾位置",最后将 k 对应的元素值赋为 x ,一般情况下,插入排序的时间复杂度和空间复杂度分别为 O(n2 ) 和 O(1). 1 2 3 4 5 6 7