今天一个朋友打印一个三位数组,我看了后,写了一个通用的。贴出来,也不至于Blog这么空荡。
Integer[] array = new Integer[] { 1, 2 ,3}以此数组为例。
Set set = new HashSet();//用来装排序后的下标
//计算数组有多少种排序方式。
int count = 1;
for (int cou = 2; cou <= array.length; cou++) {
count = count * cou;
}
while (true) {
// 用来储存数组下标
List list = new ArrayList();
for (int j = 0; j < array.length; j++) {
int s = new Random().nextInt(array.length);
list.add(s);
}
// 用来过虑重复的下标,如 1,1,0
Set indexSet = new HashSet();
for (Object object4 : list) {
indexSet.add(object4);
}
// 过虑后的下标,(是合法的加入set集合)
if (indexSet.size() == array.length) {
set.add(list);
}
// 看是不是达到了数据的排列方式的总数
if (set.size() == count) {
break;
}
}
// 输出
for (Object object : set) {
// 判断是不是List
if (object instanceof List) {
// 强转(里面装的是数字下标)
List curList = (List) object;
// 用来装排列后的集合
List<List> allList = new ArrayList<List>();
// 用来装排列后的数组
List newList = new ArrayList();
for (Object object3 : curList) {
// 添加到新的集合
newList.add(array[new Integer(object3.toString())]);
// 如果他的长度和数组的长度相同,说明是一个数组
if (newList.size() == array.length) {
// 添加到总的集合
allList.add(newList);
}
}
for (List list : allList) {
System.out.println(list.toString());
}
}
}
------打印结果------
[3, 2, 1]
[1, 3, 2]
[2, 3, 1]
[2, 1, 3]
[3, 1, 2]
[1, 2, 3]
分享到:
相关推荐
// 二维数组冒泡排序 public static void main(String[] args) { int i=0, j=0, temp = 0; int[][] nums1 = { { 34, 1, 22, 5 }, { 28, 98, 15, 32 }, { 33, -5, 17, 41 } }; int rows = nums1.length; //二维...
1、计算S=1+2+3+4+……+N直到和大于500为止 2、从键盘输入学生成绩(A、B、C、D),自动汇总并显示各类分数的人数 3、动态输入20个二位无符号数,找出其中最大数并显示 ...7、数组排序 8、求三个数中最大的数
数组排序:数组中的元素能够以字母或数字顺序进行升序或降序排序。 常用的PHP数组排序函数 •sort() – 以升序对数组排序 •rsort() – 以降序对数组排序 •asort() – 根据值,以升序对关联数组进行排序 ...
分享一个用于数组或者对象的排序的函数。该函数可以以任意深度的数组或者对象的值作为排序基数对数组或的元素进行排序。 代码如下: /** ... * 注意: 对于对象的排序, 如果使用console.log打印对象
冒泡排序算法,用random函数随机生成数值放入动态数组,然后再用算法排序后打印到edit控件
最近有个面试题挺火的——把2个有序的数组打印或排序,刚看到这个题的时候也有点蒙,最优的算法肯定要用到有序的特性. 思考了一会发现也不是很难,假如数组是正序排列的,可以同时遍历2个数组,将小的值进行排序,最后会...
数组冒泡排序,选择排序,折半查找,取最大值,反转,打印数组
定义一个数组A,长度为n。数组中的各个元素是随机生成,范围在10和20之间,设数组元素分别是n1、n2、n3、n4、n5 (1) 将数组A中的内容拷贝到数组B中 ...(3) 对数组B进行排序,找出最大值并打印
后续可以 由用户输入),然后对该数组中的各个元素值应用冒泡排序算法实现排序,并打印出排序前 和排序后的数组中的各个元素值,以方便进行对比。 (1)程序代码示例 在程序设计实现方面主要是应用双层嵌套 for 循环...
在STM8S003单片机上实现数组排序,用3种冒泡排序法对数组进行排序,并通过串口打印排序过程。
5、掌握一维数组中元素的排序。项目3、定义一个数组,将序列{0,1,2,3,4}赋值给数组,并写一个方法用来访问数据的每一个元素。1)定义一个数组,在初始化数组时有一种方式叫做静态初始化,就是在定义数组的同时就为数...
打印 int insert(int *array, int idx, int val); 成功返回数组大小,失败返回-1 int delete(int *array, int idx); 成功返回数组大小,失败返回-1 int sort(int *array, int size); 成功返回0, 失
4.设计一个程序,任意给出n个学生信息(包括:学号,姓名,成绩等),实现按照分数高低打印出学生的考试名次、学号、姓名和成绩,同一名次的学生按照学号有小到大排序,并能根据选号查看任意学生信息。
定义一个职工结构体数组,从键盘输入5位职工信息,打印输出最高的工资。是一个很好的关于学习C语言结构体的例子。
PHP 基础实例 在HTML中嵌入PHP 使用 PHP 标记 PHP 语句 ...添加动态内容 ...PHP 打印格式化输出 ...PHP for和foreach循环 ...PHP 数组排序 PHP 多维数组排序 PHP 随机数组排序 PHP 文件内容载入数组 PHP 数组操作
然后,调用`bubbleSort`函数对数组进行排序,最后打印排序后的结果。 执行该程序,输出结果为: ``` 排序后的数组: 11 12 22 25 34 64 90 ``` 这就是使用C语言编写的冒泡排序程序。冒泡排序是一种简单但效率较低...
然后,调用`quickSort`函数对数组进行排序,并打印排序后的结果。 执行程序,输出结果为: ``` 排序后的数组: 11 12 22 25 34 64 90 ``` 这是快速排序算法的一个简单示例。快速排序是一种常见且高效的排序算法,...
打印数组内容 计算数组中所有元素的和 查找数组中的最大元素 查找数组中的最小元素 对数组进行排序 计算数组的中位数 计算数组的众数 计算数组的平均值 判断数组是否为严格递增 计算二维数组中所有元素的和 旋转二维...
//打印数组元素 void merge(int A[],int p,int q,int r);//合并排序算法 /************合并排序算法的实现******************/ int main() { int p,q,r; printf("合并排序算法的实现:\n"); printf("请输入p、q...