Android面试<1> --- java排序

每次面试最扯蛋的就是笔试,烦的要死.往往最后给你来一道什么程序算法题,足够恶心的要死了.

程序排序往往要出,现在总结归纳一下:

<1> : 冒泡排序法(从小到大):

package com.org;

public class FastSort {

    /**
     * @param args
     */
    static int[] a = { 5, 4, 2, 9, 6, 7, 3 };

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        int[] arr = bubbleSort(a);
        for (int i = 0; i < arr.length; i++) {
            System.out.println("array[" + i + "] = " + arr[i]);
        }

    }

    public static int[] bubbleSort(int[] args) {

        for (int i = 0; i < args.length - 1; i++) {

            for (int j = i + 1; j < args.length; j++) {
                
                if (args[i] > args[j]) {
                    
                    int temp = args[i];
                    args[i] = args[j];
                    args[j] = temp;
                    
                }
            }

        }

        return args;

    }

}

 

<2> : 选择排序:

public static int[] selectSort(int[] args){
        
        for(int i=0;i<args.length-1;i++){
            int min=i;
            for(int j=i+1;j<args.length;j++){
                if(args[min]>args[j]){
                    min=j;
                }
            }
            
            //swap the larger number to small place
            if(min!=i){
                
                int temp=args[i];
                args[i]=args[min];
                args[min]=temp;
                
            }
            
        }
        
        return args;
        
    }

 

<3> : 插入排序:

public static int[] insertSort(int[] args){
        
        for(int i=1;i<args.length;i++){
            
            for(int j=i;j>0;j--){
                
                if(args[j]<args[j-1]){
                    int temp=args[j-1];
                    args[j-1]=args[j];
                    args[j]=temp;
                }
                
            }
            
        }
        
        return args;
        
    }

往往写完了以后,还会问一下,效率之类的问题,往往这个问题很容易难倒非计算机专业毕业做软件的工程师:

以上就是java中的四种排序方法。不同的方法效率不一样,下面是不同的算法的比较和数据交换时的大O表示。

冒泡排序:比较O(N2) 数据交换O(N2)

选择排序:比较O(N2) 数据交换O(N)

插入排序:比较O(N2) 复制数据O(N)

在实际应用中,我们要尽量选择效率高的算法。

 

posted @ 2014-12-24 22:16  MMLoveMeMM  阅读(167)  评论(0)    收藏  举报