八种排序算法java实现(1)----冒泡排序

冒泡排序是计算机领域里面的一种较简单的排序算法,原理为临近的数字两两交换,按照从小到大或从大到小的顺序两两排序,最大的或最小的数会被排在末尾。这样重复地走访改数列,直到不需要再交换。这个算法形如冒泡,较小的数会浮上来,所以叫冒泡排序。

/**
 * 冒泡排序 
 */
public class BubbleSort {
    public static void main(String[] args) {
    	//优化前
//    	bubble(randomNum());
    	//优化后
    	bubble2(randomNum());
    	
    }
    
    //生成随机数的方法
    public static int[]  randomNum(){
    	//随机数生成数组排序
    	int arr[] = new int[10];
    	for(int i =0;i<10;i++){
    		arr[i] = (int) (Math.random()*100);
    	}
		return arr;
    }
    
    
    //优化前的冒泡排序
    public static void bubble(int arr[]){
    	//这里从小到大排,最大的数占右边
    	//最多比较arr.length-1趟 ,因为每趟都可以确定一个数(这里是最大的数)
    	for(int i=0;iarr[j+1]){
    				int temp = arr[j+1];
    				arr[j+1] = arr[j];
    				arr[j] = temp;
    			}
    		}
    		System.out.println("第"+(i+1)+"趟排序结果");
    		for(int a=0;a
//答案是不用的,我们可以引入一个标记值,记录这个数列有没有交换,如果有交换,标记值就会改变状态,每次扫描一趟后判断是否改变,如果没有改变跳出循环。
    //优化后的冒泡排序
    public static void bubble2(int arr[]){
    	//定义一个标记值
    	boolean swap;
    	for(int i=0;iarr[j+1]){
    				int temp = arr[j];
    				arr[j] =  arr[j+1];
    				arr[j+1] = temp;
    				swap = true;
    			}
    		}
    		
    		if(swap == false){
    			System.out.println("第"+(i+1)+"趟排序结果");
        		for(int a=0;a

算法复杂度:最好情况,扫一遍,O(n),最坏情况n-1趟,O(n^2)

你可能感兴趣的:(数据结构与算法)