- 浏览: 405971 次
- 性别:
- 来自: 天津
文章分类
最新评论
-
junchao_qin:
[img][flash=200,200][url][img]引 ...
MyEclipse中使用VSS插件 -
tigerwood008:
IE11不好用!!
js弹出窗口 + 获取上传文件全路径 -
TheMatrix:
$.ajaxSetup({async : false});这种 ...
jquery 中的post和get方法如何同步 -
多多成长记:
Blazeds与java通信 -
ZED.CWT:
[align=ceiinter][/align]
java中利用JFrame创建窗体 【转】
转自:http://blog.csdn.net/liangjianyong/article/details/4941365
java随机排列数组
有时我们需要随机的排列数组中的元素,随机排列数组,目前常用的有两种方法,第一种就是元素A[i]对应一个优先级P[i],根据优先级作 为键值来从新排序数组;第二种方法就是A[i]随机的跟A[i]到A[n]中的任意个元素进行交换,n为数组的长度,下面是用java实现一个简单实现.
- import java.util.Date;
- import java.util.Random;
- /*
- * 随即排列数组,给定一个数组,随即排列其中的元素,目前主要有两种方法
- */
- public class RandomSort {
- public static void main(String args[]){
- int data[]= new int []{1,42,51,62,8,94,23,13,40,5};
- //int p[]=getRandom(1,-8,100);
- //show(p);
- show(data);
- permuteBySort(data);
- show(data);
- randomizeInPlace(data);
- show(data);
- }
- /*
- * 随机排列数组,使用优先级方式,每个数组元素A[i] 对应一个优先级P[i],
- * 然后依据优先级对数组进行排序
- */
- private static void permuteBySort( int [] data)
- {
- int len=data.length;
- int len3=len*len*len;
- int P[]=getRandom(1,len3,len);
- //冒泡排序
- for ( int i=len-1; i>0; i--)
- {
- for ( int j=0; j<i ; j++)
- {
- if (P[j]>P[j+1])
- {
- int temp=data[j];
- data[j]=data[j+1];
- data[j+1]=temp;
- temp=P[j];
- P[j]=P[j+1];
- P[j+1]=temp;
- }
- }
- }
- }
- /*
- * 元素A[i]是从 元素A[i]到A[n]中随机选取的
- */
- private static void randomizeInPlace( int [] data)
- {
- Date dt=new Date();
- Random random=new Random(dt.getSeconds());
- int len=data.length;
- for ( int i=0; i<len; i++)
- {
- int pos=( int )(random.nextDouble()*(len-i+1)+i)-1;
- int temp=data[i];
- data[i]=data[pos];
- data[pos]=temp;
- }
- }
- /*
- * 获得在a到b之间的n个随机数
- */
- private static int [] getRandom( int a, int b, int n)
- {
- if (a>b)
- {
- int temp=a;
- a=b;
- b=temp;
- }
- Date dt=new Date();
- Random random=new Random(dt.getSeconds());
- int res[]= new int [n];
- for ( int i=0; i<n; i++)
- {
- res[i]=(int )(random.nextDouble()*(Math.abs(b-a)+1))+a;
- }
- return res;
- }
- private static void show( int [] data)
- {
- System.out .println( "========================" );
- for ( int i = 0; i < data.length; i++)
- {
- System.out .print(data[i] + " " );
- }
- System.out .println();
- System.out .println( "========================" );
- }
-
}
发表评论
-
判断二叉树是否平衡及计算二叉树深度和结点个数
2012-09-01 10:12 7727参考:http://blog.csdn.net/zz19880 ... -
【转】java实现二叉查找树
2012-08-31 09:44 1544转自:http://blog.csdn.net/zyj817 ... -
二叉树及其遍历
2012-08-21 09:50 1564转自:http://www.iteye.com/t ... -
java栈中缀表达式转为后缀表达式
2012-07-19 11:33 2470思路: 遇到数字,则输出。 遇到操作符,入栈,在入栈前若该 ... -
java栈实现括号匹配
2012-07-19 09:48 4542算法思想: 做一个空栈,读入字符。 若字符是左运算符,则入 ... -
【转】java静态变量和实例变量的区别
2012-06-20 11:02 1341转自:http://www.2cto.com/kf/20100 ... -
【转】java中会存在内存泄漏吗,请简单描述。
2012-06-20 10:24 1388java中 ... -
【转】java匿名内部类2
2012-06-12 13:45 1265匿名内部类就是没有名字的内部类。什么情况下需要使用匿名内部类? ... -
【转】java匿名内部类
2012-06-12 13:32 1446java匿名内部类 (2010-11 ... -
【转】JAVA中获取路径
2012-03-25 16:57 857转自:http://wenku.baidu.com/view/ ... -
【转】Map遍历
2012-03-25 16:56 943转自:http://wenku.baidu.com/view/ ... -
【转】java解析xml文件四种方式
2012-03-25 16:54 1401转自:http://wenku.baidu.com ... -
【转】JDOM解析处理xml
2012-03-25 16:52 1262转自http://qingbyqing.iteye.com/b ... -
【转】解析Html页面:HTML Parser的试用
2012-03-24 15:10 1419转自:http://blog.csdn.net/scud/ar ... -
设计模式——代理模式
2012-01-06 13:14 1270代理模式: 为其他对象提供一种代理以控制对这个对象的访问 ... -
设计模式——装饰模式
2012-01-05 15:58 1280首先介绍三个重要原则: 依赖倒转原则:高层模块不应该依赖于 ... -
设计模式——策略模式 & 单例模式
2011-12-29 16:26 1572策略模式: * 策略模式定义了算法家族,分别封装起来,让他 ... -
排序算法
2011-12-28 22:41 960参考:http://student.zjzk.cn/cours ... -
设计模式——简单工厂 VS 工厂方法
2011-12-28 15:07 1208简单工厂模式: 它最大优点在于工厂类中包含了必要的逻辑 ... -
String
2011-12-27 10:53 12711. String s = new String(" ...
相关推荐
总结来说,从n个数组中取出所有排列组合的Java实现涉及到递归算法、回溯法以及数据结构的操作。理解这些概念并能够熟练运用是成为一名优秀程序员的关键。通过这个例子,我们可以看到如何利用Java的灵活性和表达力来...
在计算机科学中,线性表是一种基本的数据结构,它由若干个...在实际编程中,我们可以根据需求选择适合的数据结构,如在需要快速随机访问且对插入、删除速度要求不高的场景下,动态数组实现的线性表是一个不错的选择。
这是一种更通用且高效的随机排列数组元素的算法,适用于原地操作。它从最后一个元素开始,依次向前选择未确定位置的元素,与一个随机元素交换。代码如下: ```java int[] array = {...}; // 初始化数组 Random ...
在Java编程中,有时我们需要对数组的元素进行随机排列,以实现各种功能,例如模拟洗牌、测试等。本文将详细讲解如何使用Java实现数组的随机打乱顺序,并结合给出的示例代码进行分析。 首先,我们要理解的是,打乱...
可以使用Fisher-Yates(Knuth)洗牌算法,为按钮数组或列表中的元素生成一个新的随机排列。在Android中,这可以通过`java.util.Random`类实现。随机排列后的顺序可以用来设置按钮的顺序或者作为按钮点击事件的依据。...
2. Fisher-Yates(Knuth)洗牌算法:这是一种常用的随机排列算法,它在线性时间复杂度内完成对数组的随机排列。该算法的基本思想是从最后一个元素开始,依次与前面的元素进行随机交换,直到第一个元素。 3. 递归或...
在本项目中,"Java实现简单的成语消消乐(动态数组)"是一个旨在教授初学者如何使用Java编程语言创建一个类似“成语消消乐”的游戏。这个项目涉及到几个关键的编程概念,包括动态数组、数据存储、随机数生成、输入/...
在Java编程中,数组和List接口的实现(如ArrayList、LinkedList和Vector)是两种常见的数据结构,它们各自具有不同的特点和性能。这篇文章将探讨这些结构在随机访问、迭代、插入和删除操作上的性能差异。 首先,...
这个例子展示了如何在Java中使用冒泡排序对一个长度为10的随机数组进行升序排列。通过外层循环控制轮数,内层循环实现两两比较和交换,以及一个标志位判断是否提前结束排序,从而实现了冒泡排序算法的基本功能。
3. **随机选择与随机排列**:在算法中,随机选择数组或集合中的元素,或者进行随机排列,可以使用`nextInt()`生成索引来实现。例如,`Collections.shuffle()`方法就利用了`Random`进行随机排列。 4. **随机抽样**:...
排序后的数组具有了顺序性,即元素按一定顺序排列。 ```java Arrays.sort(arr); ``` 对于排序后的数组,我们进行一个简单的操作,比如累加数组中所有大于等于128的元素值。这个操作在执行时,由于数组是有序的,...
这样,每次迭代后,数组中的元素位置都是随机的,最终形成一个随机排列。 示例代码如下: ```javascript // 随机化原数组 function shuffle(array) { var m = array.length, t, i; // 如果还剩有元素… while ...
- `createArray()` 方法用于生成随机测试数组,其中包含正负数。 - `printArray()` 方法用于打印数组元素到控制台,方便观察排序结果。 - `swap()` 方法用于交换数组中两个指定位置的元素。 - `bubbleSort()` ...
本篇文章将介绍两种公平的算法来实现这一功能,确保数组元素被随机且均匀地重新排列。公平算法意味着每个元素在打乱后都有相等的概率出现在数组的任何位置。 ### 1. 洗牌程序原理 洗牌程序的灵感来源于实际生活中...
### Java 数组排序知识点 #### 排序算法的分类及适用场景 在计算机科学中,排序算法是一项重要的技术,用于对数据集进行有序排列。排序算法可以分为多种类型,每种都有其特定的应用场景和效率特点。根据文档提供的...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
1. **创建RGB数组**:根据指定的图像尺寸,生成一个二维数组,每个元素包含红、绿、蓝三个分量的随机整数。 2. **计算位图大小**:根据RGB数组的尺寸和颜色深度,计算出位图文件的实际大小。由于BMP文件的行必须是4...
描述中的程序实现了快速排序法,可能是用一种编程语言如C++、Java或Python编写的,用于对一维数组进行排序。这种程序的实现一般包括上述的三个主要步骤,并可能包含优化措施,例如处理小数组时改用插入排序,或者...
然而,插入和删除操作在非尾部位置可能会导致数组内部元素的重新排列,因此它们的时间复杂度通常为O(n)。 3. **链表**:链表是一种线性数据结构,每个元素(节点)包含数据和指向下一个节点的引用。Java中的...