LintCode - 整数排序(入门)

版权声明:本文为博主原创文章,未经博主允许不得转载。

难度:入门
要求:

给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2
) 的排序算法。
样例对于数组 [3, 2, 1, 4, 5], 排序后为:[1, 2, 3, 4, 5]。

思路:

冒泡排序

    /**
     * @param A an integer array
     * @return void
     */
    public void sortIntegers(int[ ] A) {
        // Write your code here
        for(int i = 0; i < A.length; i++){
            for(int j = 0; j < A.length - i - 1; j++){
                if(A[j] > A[j+1]){
                    int tmp = A[j];
                    A[j] = A[j+1];
                    A[j+1] = tmp;
                }
            }
        }
    }

插入排序

    /**
     * @param A an integer array
     * @return void
     */
    public void sortIntegers(int[ ] A) {
        // Write your code here
        int j,tmp;
        for(int i = 1; i < A.length; i++){
            tmp = A[i];
            for(j = i; j > 0 && [j-1] > tmp; j--){
                A[j] = A[j-1];
            }
            A[j] = tmp;
        }
    }

选择排序

  public static void selectSort(int[] data) {  
        for(int i = 0; i < data.length; i++){
            int tmp = data[i];
            int index = i;
            for(int j = i + 1; j < data.length; j++){
                if(data[j] < tmp){
                    tmp = data[j];
                    index = j;
                }   
            }
            swap(data,i,index);
        }
   }  
    
   public static void swap(int[] data, int i, int j) {  
        if (i == j) {  
            return;  
        }  
        data[i] = data[i] + data[j];  
        data[j] = data[i] - data[j];  
        data[i] = data[i] - data[j];  
    } 

你可能感兴趣的:(LintCode - 整数排序(入门))