一次成功但不完美的牛客网编程题经历

题目在此,关于排序的 

https://www.nowcoder.com/questionTerminal/adc291e7e79f452c8b59243a5ce68d3a

我的代码:

import java.util.*;
 
public class Main {
 
    public int[] paixu(int[] nums,int begin,int end){
        if(nums.length==0)
            return null;
        int[] result = new int[nums.length];
         
        for(int j=0;j<nums.length;j++){
            int min = nums[0];
            int index=0;
            for(int i=0;i<nums.length;i++){
                if(nums[i]<min){
                    index=i;
                    min = nums[i];
                }
            }
            result[j]=min;
            nums[index]=Integer.MAX_VALUE;
        }
         
        return result;
    }
     
    public int panduan(int[] order,int[] bad){
        int temp = 0;
        int sum = 0;
        for(int i=0;i<bad.length;i++){
            if(bad[i]==order[temp]){
                sum++;
                temp++;
                i++;
                while(temp<order.length&& i<bad.length ){
                    if(bad[i]==order[temp]){
                        sum++;
                        temp++;
                        i++;
                    }
                    else{
                        while(i<bad.length && bad[i]!=order[temp]){
                            i++;
                        }
                    }
                }
                break;
            }
        }
        return sum;
    }
     
    public Main() {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] nums = new int[n];
        int[] nums2 = new int[n];
        for(int i =0;i<nums.length;i++){
            int temp = in.nextInt();
            nums[i]=temp;
            nums2[i]=temp;
        }
         
        int[] jieguo =paixu(nums, 0, nums.length-1);
        System.out.println(nums.length-panduan(jieguo,nums2));
    }
 
    public static void main(String[] args) {
        new Main();
    }
}

然后这是别人家的代码:

import java.util.*;

public class Main {

    public Main() {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int[] arr =new int[n];
        int[] sortArr =new int[n];
        for(int i =0;i < n; i++){
            arr[i] = scan.nextInt();
            sortArr[i] = arr[i];
        }
        
        Arrays.sort(sortArr);    //这一行代替了我的那个paixu()方法!
        
        //下面这几行就代替了我的panduan()方法!
        int count = 0;
        int j = 0;
        for (int i = 0; i < n; i++) {
            if (arr[i] == sortArr[j]) {
                count++;
                j++;
            }
        }
        System.out.println(n - count);
    }

    public static void main(String[] args) {
        new Main();
    }
}

这一对比差距不小啊。。

posted @ 2017-06-01 15:49  gjjca  阅读(1500)  评论(0编辑  收藏  举报