八大排序算法(1)(冒泡排序+快速排序)

有些小同学就是不听话非要点开~
啥也没写呢

在这里插入图片描述
①冒泡排序
思想:1、每一次遍历比较,将最大值筛选出来放到数组的最后一个位置array[length-1]
2、继续遍历数组0-array[length-2]
重复上述步骤,直到比较到数组下标0
在这里插入图片描述

public class BubbleSort {
    
    
	static int[] arr = new int[] {
    
    8,65,41,28,6,1,4,5,32,9,10};	
	public static void main(String[] args) {
    
    		// TODO Auto-generated method stub		for (int i = 0; i < arr.length; i++) {	
			for (int j = 0; j < arr.length -i -1; j++) {
    
    	
					if(arr[j]>arr[j+1]) {
    
    		
				int temp = arr[j];					           arr[j] = arr[j+1];			
					arr[j+1] = temp;				}		
						}			System.out.println(Arrays.toString(arr));		}	}}

②快速排序
思想:以基准分 小于基准 和 大于基准的两个部分 + 递归
1、以第一个数为基准,遍历将大于基准的数值放到数组后半部分位置,小于基准数组放到前半部分位置,最后将基准值放到中间的空位
2、被划分的两个子数组递归执行上述过程

public static void quicksort(int[] arr,int low,int high){
    
    
        if(arr.length<=0) return;
        if(low>=high) return;
        int left=low;
        int right=high;
        int temp = arr[left];
        while (left<right)
        {
    
    
            while (left<right && arr[right]>=temp)
            {
    
    
                right--;
            }
            arr[left]=arr[right];
            while (left<right && arr[left]<=temp)
            {
    
    
                left++;
            }
            arr[right]=arr[left];
        }
       arr[right]=temp;
       //被划分好的子数组分别进行递归
        quicksort(arr,low,left-1);
        quicksort(arr,left+1,high);
    }

猜你喜欢

转载自blog.csdn.net/weixin_43889487/article/details/121569487