关于java编程的基础知识(比如基本算法、数据结构等)在前面已经介绍过了,相信大家也都有学习,java数组也是java零基础的新手朋友们需要学习的基础知识,下面我们一起来学习java数组排序的知识,了解怎么样用java算法对数组排序。
要想对数值型数组进行排序,可以使用Arrays类中的sort方法:
int[] a= new int[10000];
...
Arrays.sort(a)
这个方法使用了优化的快速排序算法。快速排序算法对于大多数数据集合来说都是效率比较高的,Arrays类还提供了几个使用起来很便捷的方法。
下面例子中的程序将产生一个抽奖游戏中的随机数值组合。
假如抽奖是“从49个数值中抽取6个”,那么,程序可能的输出结果为:
要想选择这样一个随机的数值集合,就要首先将数值1, 2, ...,n存入数组numbers中:
int[] numbers= new int[n];
for(inti =0;i
numbers[i] = i + 1;
而用第二个数组存放抽取出来的数值:int[]result=new int[k];
现在,就可以开始抽取k个数值了。Math.rando方法将返回一个0-1之间(含0、不含1)的随机浮点数。用n 乘以这个浮点数,就可以得到从0-n-1之间的一个随机数。
int r =(int)(Math.random()*n;
下面将result的第i个元素设置为numbers[r]存放的数值,最初就是r本身。但正如所看到的那样,
numbers数组的内容在每一次抽取之后都会发生变化。
result[i] = numbers[r];因为所有抽奖的数值不能一样,所以必须确保不会再次抽取到那个数值。因此,这里使用数组中的最后一个数值改写number[r],并将n减1 。
numbers[r]= numbers[n - 1];
n--;
关键在于每次抽取的都是下标,而不是实际的值。下标指向(point into)包含尚未抽取过的数组元素。
在抽取了k个数值之后,就可以对result数组进行排序了,这样使得输出效果更加清晰:
Arrays.sort(result);
for(int r:result)
System.out.println(r);
• static void sort(type[] a)
使用优化的快速排序算怯对数组进行排序。
参数:a 一个类型为int、long、short 、char、byte、float或double的数组
• static int binarySearch(type[] a, type v)
使用二分搜索算法查找值。如果找到,返回相应的下标:否则,返回一个负值r;-r-1为保持有序v应插入的位置。
参数:a 一个类型为int、long、short、char、byte、float或double的有序数组
v 与a中元素类型相同的一个值
• static void fill(type[] a, type v)
将数组的所有元素设置为v。
参数:a 一个类型为int long、short、char、boolean、float或double 的数组
v 与a中元素类型相同的一个值
• static boolean equals(type[ ]a,type[] b}
如果两个数组的长度相同,并且下标相同的元素都对应相等,则返回true
参数: a, b 类型为int long short char、byte、boolean、float、double的数组
以上就是对java数组排序内容的介绍,并用实例具体说明应该用什么样方法来对java数组排序,相信有了例子大家会更清楚具体的操作,希望大家在平时空余的时间多多学习java视频教程中关于java数组排序的内容,并加以练习做到完全掌握数组的知识和操作。