JAVA冒泡排序与直接选择排序

一、冒泡排序

1、 基本思想

冒泡排序基本思想是对比相邻的元素值,如果满足条件就交换元素值,例如,把较小的元素移动到数组前方,较大的元素移动到数组后方,如此,较小的元素就像气泡一样从底部上升到顶部。

2、算法实现

    public static void BubbleSort(int[] arr){
    
    
    	//数组中arr.length个元素只需要比较arr.length-1轮即可得出排序后的数组,所以这边i=1
        for (int i = 1; i < arr.length ; i++) {
    
    
			//比较i轮以后,数组最后i个元素一定是已经排序好的元素,所以这边有arr.length-i
            for (int j = 0; j < arr.length-i; j++) {
    
    
            	//本例为升序排序
                if(arr[j] > arr[j+1]){
    
    
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        for(int a : arr)
        	System.out.println(a);
    }

二、直接选择排序

1、 基本思想

直接选择排序的基本思想是将指定位置的元素与数组其他元素进行比较,然后将指定的位置的元素放到合理的位置,和冒泡排序不同,不是只比较相邻的元素,而是一轮比较中找到最大(或最小)的元素。
举个例子,加入要在乱序的1-10中找出一个升序的1-10的序列,只需要在第一轮中找到10,放到最末,第二轮中找到9,依次直到找到1。

2、算法实现

    public static void SearchSort(int[] arr){
    
    
    	int index = 0;
    	//数组中arr.length个元素只需要比较arr.length-1轮即可得出排序后的数组,所以这边i=1
    	for(int i = 1; i < arr.length; i++){
    
    
    		//比较i轮以后,数组最后i个元素一定是已经排序好的元素,所以这边有arr.length-i
    		//但是因为每一轮比较都需要未比较的元素全部和arr[index]比较,所以是<=
    		for(int j = 0; i <= arr.length-i; j++){
    
    
    			//本例为升序
    			if(arr[j] > arr[index])
    				index = j;
    		}
    		//交换最尾元素与最大元素的值
    		int temp = arr[arr.length - i];
    		arr[arr.length - i] = arr[index];
    		arr[index] = temp;
    	}
    	for(int a : arr)
        	System.out.println(a);
    }

三、算法比较

由于直接选择排序算法的比较次数比冒泡排序的比较次数少,因此直接选择排序速度会快些。

感谢阅读,如有错误,不吝赐教。

猜你喜欢

转载自blog.csdn.net/UncleBlain/article/details/108694175