小弟刚学java,类什么调用一头雾水,请问高手怎么实现从键盘上键入一个任意的数,然后就可以随机产生键入数字大小的数组,然后对数组分别用快速排序和插入排序,忘高手写段代码参考学习,分数全送了!!

解决方案 »

  1.   

    建议楼主去看看API,多看看类和方法的用法, java.util  java.lang.Math  里面都有方法的使用
      

  2.   

    public class TestSort {
       
    public static void main(String a[]){
    //jdk1。5以上
    System.out.println("int类型分割大小为限制定为2位把");
    System.out.println("从键盘上键入一个任意的数:");
    Scanner s = new Scanner(System.in);
    //data为 ---实现从键盘上键入一个任意的数
    String data = s.nextLine();
    int[] b = getData(data);
    //插入排序
    insert(b);
    //快速排序
    //fast(b) 
    /**
     * 输出结果
     */
    for(int i = 0;i<b.length;i++){

    System.out.println(b[i]);
    }

    }
    //随机产生键入数字大小的数组;

    public static int[] getData(String a){
    StringBuffer aString = new StringBuffer(a);
    int bb[];
    if(1==aString.length()%2){
     bb = new int [aString.length()/2+1];
    }else{
     bb= new int [aString.length()/2];
    }


    try {
    for(int i = 0;i<aString.length()/2;i++){
    String c = aString.substring(2*i,2*i+2).toString();
    bb[i]=Integer.parseInt(c);
    }
    } catch (Exception e) {
    e.printStackTrace();
    }

    if(1==aString.length()%2){

    bb[bb.length-1]=Integer.parseInt(aString.substring(aString.length()-1, aString.length()));

    }
    return bb;
    }
    /**
     * 快速排序从小到大
     */
    public static int[] fast(int[] a){
    int temp ;
    for(int i = 0;i<a.length;i++){
    for(int j = 0;j<a.length-1;j++){
    //从小到大
    if(a[j]>a[j+1]){
    temp = a[j];
    a[j]=a[j+1];
    a[j+1]=temp;
    }
    }

    }
    return a;
    }
    /**
     * 插入排序
     *
     */
      public static int[] insert(int[] a)
        {
            int out, in;
            for ( out = 1; out < a.length; out++ )
            {
                int temp = a[out];
                in = out;
                while ( in > 0 && a[in - 1] >= temp )
                {
                    a[in] = a[in - 1];
                    --in;
                }
                a[in] = temp;
            }
            
            return a ;
        }
      

  3.   

    还凑合吧??楼主自己看看,顺便给我做下测试import java.util.*;
    public class Test {
    public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    //键入的数,在这里没处理异常
                    int length = s.nextInt();
    int[] a = new int[length];
                    //下面随机生产数组中的元素
    Random random = new Random();
    for(int i = 0; i < length; i++) {
    a[i] = random.nextInt(length);
    }
                    //定义int数组b,让它的元素的值与a相等
    int[] b = new int[length];
                    for(int i = 0; i < length; i++) {
                            b[i] = a[i];
                    }
                    //进行排序并输出
    System.out.println("Quick Sort:");
    quickSort(a); 
    StringBuilder sb = new StringBuilder(); 
       for(int i : a) { 
        sb.append(i + ", "); 
       } 
       sb.delete(sb.lastIndexOf(","), sb.length()); 
       System.out.println(sb); System.out.println("Insertion Sort:");
    insertionSort(b); 
    sb = new StringBuilder(); 
       for(int i : b) { 
        sb.append(i + ", "); 
       } 
       sb.delete(sb.lastIndexOf(","), sb.length()); 
       System.out.println(sb);
    }
    /** 
       * 对数组进行分割,随便取出一个数(temp),一般取第一个,进行分割后 
       * temp的左边将比temp小,右边比temp大 
       */ 
    public static int partion(int[] a, int low, int high) { 
       //取第一个点当作支点 
       int temp = a[low]; 
       while(low < high) { 
        //从右边开始扫描,一直到右边的值比temp(支点)小 
        while (low < high && temp <= a[high]) { 
         high--; 
        } 
        if(low < high) { 
         a[low++] = a[high]; 
        } 
        //再从左边开始扫描,一直到左边的值比temp(支点)大 
        while (low < high && temp >= a[low]) { 
         low++; 
        } 
        if(low < high) { 
         a[high--] = a[low]; 
        } 
       } 
       a[low] = temp; 
       return low; 

    public static void qSort(int[] a, int low, int high) { 
       int p = partion(a, low, high); 
       //对左边进行递归 
       if (p - 1 > low) { 
       qSort(a, low, p - 1); 
       } 
       //对右边进行递归 
       if (p + 1 < high) { 
        qSort(a, p + 1, high); 
       } 

    public static void quickSort(int[] a) { 
       qSort(a, 0, a.length - 1); 

     
    //直接插入排序
    public static void insertionSort(int[] a) {
    int i;
    int j;
    int temp = 0;
    for(i = 1; i < a.length; i++) {
    if(a[i] < a[i-1]) {
    temp = a[i];
    for(j = i-1; j >= 0 && temp < a[j] ; j--) {
    a[j+1] = a[j];
    }
    a[j+1] = temp;
    }
    }
    }
    }
      

  4.   


    import javax.swing.JOptionPane;public class Sort {    public static int hoare(int[] a, int l, int h)//分区处理函数
        {
            int i, j;
            int x;
            i = l;
            j = h;
            x = a[i];
            do {
                while ((i < j) && (a[j] >= x)) {
                    j--;
                }
                if (i < j) {
                    a[i] = a[j];
                    i++;
                }
                while ((i < j) && (a[i] <= x)) {
                    i++;
                }
                if (i < j) {
                    a[j] = a[i];
                    j--;
                }
            } while (i < j);
            a[i] = x;
            return (i);
        }//hoare end
        public static void quickSort(int[] a, int l, int h)//递归的快速排序
        {
            int i;
            if (l < h) {
                i = hoare(a, l, h);
                quickSort(a, l, i - 1);
                quickSort(a, i + 1, h);
            }
        }//quickSort end    public static void insertSort(int[] a){//插入排序
            int tem,j;
            for(int i=1;i<a.length;i++){
                if(a[i]<a[i-1]){
                    tem=a[i];
                    a[i]=a[i-1];
                    for(j=i-2;j>=0&&tem<a[j];j--)a[j+1]=a[j];
                    a[j+1]=tem;
                }
            }
        }    public static void main(String[] args) {
            String input=JOptionPane.showInputDialog(null,"输入数组长度");
            int n=Integer.parseInt(input);
            int[] a=new int[n];
            for(int i=0;i<n;i++){
                a[i]=(int)(Math.random()*100);
            }
            for(int i=0;i<n;i++)System.out.print(a[i]+" ");
            System.out.println();
            Sort.quickSort(a, 0, n-1);
            Sort.insertSort(a);
            for(int i=0;i<n;i++)System.out.print(a[i]+" ");
        }
    }
      

  5.   

    package csdnTest;import java.util.Arrays;
    import java.util.Scanner;public class Test {    /**
         * 获取控制台输入数字
         * 
         * @return
         * 
         * @author kakukyowu
         */
        @SuppressWarnings("unused")
        private static int getScanner() {        System.out.println('\n' + "请输入一个数字:");
            Scanner s = new Scanner(System.in);        return Integer.parseInt(s.nextLine());
        }    /**
         * 数组排序
         * 
         * @param arrays
         * @return
         * 
         * @author kakukyowu
         */
        private static int[] orgArrays(int[] arrays) {        Arrays.sort(arrays);
            return arrays;
        }    /**
         * 打印排序后的数组内容
         * 
         * @param arrays
         * 
         * @author kakukyowu
         */
        private static void printArraysInfo(int[] arrays) {        System.out.print("[");        for (int i = 0; i < arrays.length; i++) {
                System.out.print(arrays[i]);
                if (i != arrays.length - 1) {
                    System.out.print(", ");
                }
            }        System.out.print("]");
        }    /**
         * main
         * 
         * @param a
         * 
         * @author kakukyowu
         */
        public static void main(String args[]) {        int[] arrays = null;
            int[] arraysCopy = null;
            int tag = -1;        while (true) {
                int count = 0;
                try {
                    count = getScanner();
                } catch (Exception e) {
                    System.out.println("输入的数字有误!继续输入【yes】,结束输入其它键!");
                    Scanner s = new Scanner(System.in);
                    if ("yes".equals(s.nextLine())) {
                        continue;
                    } else {
                        System.out.println("GAME OVER!!!");
                        break;
                    }
                }
                tag++;            if (tag == 0) {
                    arrays = new int[tag + 1];
                    arrays[tag] = count;
                } else {
                    arraysCopy = new int[tag + 1];
                    System.arraycopy(arrays, 0, arraysCopy, 0, arrays.length);
                    arraysCopy[tag] = count;                arrays = new int[tag + 1];
                    System.arraycopy(arraysCopy, 0, arrays, 0, arraysCopy.length);
                }            arrays = orgArrays(arrays);
                printArraysInfo(arrays);
            }
        }
    }
      

  6.   

    我来凑个热闹。
    我这个方法用了冒泡排序
    package test;public class MaoPaoMethod {
    public static void main(String args[]) {
    System.out.println("hello world!");
    new maoPao();
    }
    }class maoPao {
    maoPao() {
    int a[] = {1, 54, 3, 56 };
    int b;
    for (int i = 0; i < a.length; i++) {//总循环数
    for (int m = i + 1; m < a.length; m++) {//前后数比对的次数
    if (a[i] > a[m]) {//if体就是为了把小数放在前面 ,大数放后面
    b = a[i];
    a[i] = a[m];
    a[m] = b;
    }
    }
    System.out.println(a[i]);
    }
    }
    }