排序算法

(1)冒泡排序
Java代码  
package ChapterOne;  
  
public class Bubble {  
  
    public static void main(String[] args) {  
        Bubble b = new Bubble();  
        for(int i = 0;i < arr.length;i++){  
            System.out.print(arr[i]+" ");  
        }  
        System.out.println();  
        b.bubble();  
        for(int i = 0;i < arr.length;i++){  
            System.out.print(arr[i]+" ");  
        }  
                  System.exit(0);  
    }  
    /** 
     * 冒泡排序 
     */  
    public void bubble(){  
        for(int i = arr.length-1;i > 1;i--){  
            for(int j = 0;j < i;j++){  
                if(arr[j] > arr[j+1])  
                    swap(j,j+1);  
            }  
        }  
    }  
    /** 
     * 交换数组中的两个数 
     * @param one 
     * @param two 
     */  
    public void swap(int one,int two){  
        long temp = arr[one];  
        arr[one] = arr[two];  
        arr[two] = temp;  
    }  
      
    static long arr[] = new long[20];  
    /** 
     * 随机初始化一个长度为20的数组 
     */  
    static{  
        for(int i = 0;i < arr.length;i++){  
            arr[i] = (long) (Math.random()*100);  
        }  
    }  
}  


(2)选择排序 Java代码  
package ChapterOne;  
  
public class SelectSort {  
    /** 
     * 初始化一个长度为size的数组 
     * @param size 
     */  
    public SelectSort(int size){  
        arr = new long[size];  
        for(int i = 0;i < size;i++){  
            arr[i] = (long) (Math.random()*100);  
        }  
    }  
    /** 
     * 选择排序 
     * @return 
     */  
    public long[] sort(){  
        for(int i = 0;i < arr.length;i++){  
            int minIndex = findMin(i);  
            long min = arr[minIndex];  
            //子数组中的所有的数后移一个位置  
            for(int j = minIndex;j > 0;j--)  
                arr[j] = arr[j-1];  
            //把最小的数插入到最前端  
            arr[0] = min;  
        }  
        return arr;  
    }  
    /** 
     * 查找一start为起始位置到数组最后位置这段子数组中最小的一个数的位置 
     * @param start 
     * @return 
     */  
    public int findMin(int start){  
        int min = start;  
        for(int i = min;i < arr.length;i++)  
            if(arr[min] > arr[i])  
                min = i;  
        return min;  
    }  
      
    public static void main(String[] args) {  
        SelectSort ss = new SelectSort(10);  
        ss.print();  
        long oa[] = ss.sort();  
        for(int i = 0;i < oa.length;i++)  
            System.out.print(oa[i]+" ");  
        System.out.println();  
        System.exit(0);  
    }  
    public void print(){  
        for(int i = 0;i < arr.length;i++){  
            System.out.print(arr[i]+" ");  
        }  
        System.out.println();  
    }  
      
    long arr[];  
}  

你可能感兴趣的:(排序算法)