请用java语言编写排序程序.请编写一个多线程的程序,先产生一个大于10的随机整数n,再产生n个随机数并存放于数组中,然后创建两个线程并发地对所产生的随机数分别进行排序,其中,一个线程

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/05 19:02:54

请用java语言编写排序程序.请编写一个多线程的程序,先产生一个大于10的随机整数n,再产生n个随机数并存放于数组中,然后创建两个线程并发地对所产生的随机数分别进行排序,其中,一个线程
请用java语言编写排序程序.
请编写一个多线程的程序,先产生一个大于10的随机整数n,再产生n个随机数并存放于数组中,然后创建两个线程并发地对所产生的随机数分别进行排序,其中,一个线程要求采用冒泡排序法进行排序,另一个线程要求采用快速排序法进行排序,最后比较这两个线程排序的结果,并输出先完成排序的线程.

请用java语言编写排序程序.请编写一个多线程的程序,先产生一个大于10的随机整数n,再产生n个随机数并存放于数组中,然后创建两个线程并发地对所产生的随机数分别进行排序,其中,一个线程

参考代码如下,可以按需求自己修改

import java.util.Date;
public class SortThread {
\x09public static void main(String[] args) {
\x09\x09//产生一个随机数组
\x09\x09int[] ary = getArray();
\x09\x09//启动冒泡排序线程
\x09\x09new Thread(new MaoPao(ary)).start();
\x09\x09//启动快速排序线程
\x09\x09new Thread(new KuaiSu(ary)).start();
\x09}
\x09private static int[] getArray() {
\x09\x09//建议数字n不要超过1百万,十万左右就好了
\x09\x09int n = (int) (Math.random()*1000000)+11;
\x09\x09int[] ary= new int[n];
\x09\x09\x09\x09System.out.println("n的值是" + n);
\x09\x09for (int i = 0; i < ary.length; i++) {
\x09\x09\x09ary[i] = (int) (Math.random()*100000);
\x09\x09}
\x09\x09return ary;
\x09}
}
//冒泡排序
class MaoPao implements Runnable {
\x09int[] ary;
\x09public MaoPao(int[] ary) {
\x09\x09this.ary = ary;
\x09}
\x09@Override
\x09public void run() {
\x09\x09long st = System.currentTimeMillis();
\x09\x09System.out.println(new Date() + "冒泡排序线程:开始执行排序");
\x09\x09for (int i = 0; i < ary.length - 1; i++) {
\x09\x09\x09for (int j = 0; j < ary.length - i - 1; j++) {
\x09\x09\x09\x09if (ary[j] < ary[j + 1]) {
\x09\x09\x09\x09\x09int temp = ary[j];
\x09\x09\x09\x09\x09ary[j] = ary[j + 1];
\x09\x09\x09\x09\x09ary[j + 1] = temp;
\x09\x09\x09\x09}
\x09\x09\x09}
\x09\x09}
\x09\x09long et = System.currentTimeMillis();
\x09\x09System.out.println(new Date() + "冒泡排序线程完成排序,耗费时间" + (et - st) + "毫秒");
\x09\x09for (int i = 0; i < ary.length; i++) {
\x09\x09\x09System.out.println(ary[i]+" ");
\x09\x09}
\x09}
}
//快速排序
class KuaiSu implements Runnable {
\x09int[] ary;
\x09public KuaiSu(int[] ary) {
\x09\x09this.ary = ary;
\x09}
\x09@Override
\x09public void run() {
\x09\x09long st = System.currentTimeMillis();
\x09\x09System.out.println(new Date() + "快速排序线程:开始执行排序");
\x09\x09quickSort(ary, 1, ary.length);
\x09\x09long et = System.currentTimeMillis();
\x09\x09System.out.println(new Date() + "快速排序线程排序完成,耗费时间" + (et - st) + "毫秒");
\x09\x09for (int i = 0; i < ary.length; i++) {
\x09\x09\x09System.out.println(ary[i]+" ");
\x09\x09}
\x09}

\x09public static int Partition(int a[], int p, int r) {
\x09\x09int x = a[r - 1];
\x09\x09int i = p - 1;
\x09\x09int temp;
\x09\x09for (int j = p; j <= r - 1; j++) {
\x09\x09\x09if (a[j - 1] <= x) {
\x09\x09\x09\x09i++;
\x09\x09\x09\x09temp = a[j - 1];
\x09\x09\x09\x09a[j - 1] = a[i - 1];
\x09\x09\x09\x09a[i - 1] = temp;
\x09\x09\x09}
\x09\x09}
\x09\x09temp = a[r - 1];
\x09\x09a[r - 1] = a[i + 1 - 1];
\x09\x09a[i + 1 - 1] = temp;
\x09\x09return i + 1;
\x09}
\x09public static void quickSort(int a[], int p, int r) {
\x09\x09if (p < r) {
\x09\x09\x09int q = Partition(a, p, r);
\x09\x09\x09quickSort(a, p, q - 1);
\x09\x09\x09quickSort(a, q + 1, r);
\x09\x09}
\x09}
}

用java语言编写一个程序对任意三个整数进行排序并输出结果 请用java语言编写排序程序.请编写一个多线程的程序,先产生一个大于10的随机整数n,再产生n个随机数并存放于数组中,然后创建两个线程并发地对所产生的随机数分别进行排序,其中,一个线程 用JAVA语言编写程序19.编写一个译码程序,把一个英语句子译成数字代码.译码规则是以数字 1代替字母 a,数 java 数组字母排序编写一个程序.将下列名称按字母顺序排列.GeorgeAlbertTinaXavierRogerTimWilliam 用java语言编程 设y=f(x)是一个分段函数,表达式如下用java语言编程 设y=f(x)是一个分段函数,表达式如下:请编写一个Java程序,实现以下功能:定义任意一个实数x,即可计算并输出对应的 y输入 编写一个矩阵运算程序包括(矩阵加减乘转置、求矩阵最大最小元素对角线元素之和、下三角、上三角之和)请用C语言编写 帮忙看一下,这句英文怎么写?我用java语言编写了一个程序,名字叫myApp,我英文标注一下,证明软件是java编写的,应该是myApp for java 还是myApp by java 还是其他写法? 请各位高手帮忙编写JAVA程序:求一个3阶方阵的对角线上个元素之和. 编写一个c语言程序直到运行,请描述每一步生成的文件类型. JAVA语言计算表达式的结果用java语言编写一个程序,输入表达式,结算表达式的结果,其中表达式中有括号 请使用java语言编写一段程序,统计这段文字中单词的个数,并输出其中由四个字母组成的单词 用c语言编写一个求三角形面积的程序 用C语言编写一个程序:从键盘输入n(0 用C语言编写程序,输入一个正整数n(1 用c语言编写一个程序,输出下列雪花图案! 编写一个程序1!+2!+3!+...+100!用BASIC语言 java 中,在程序中直接给定一个正整数n(例如n=201),请编写程序计算并输 出小于n的最大素数. 用JAVA 编写程序,从键盘读入10个整数存入数组,输出最大值,最小值及它们所在数组中的位置请JAVA高手指导!