反射机制and快排算法

反射机制:

通常代码都是固定的,但在某些场合编写的代码不确定创建什么类型的对象,也不确定调用和方法,希望运行传递的参数来决定,这种动态编程技术叫反射

通俗讲就是动态创建对象并动态调用方法的机制

快排:

```
package day24PaiXuSuanFa;

import java.lang.reflect.Array;
import java.util.Arrays;

//快速排序算法:
public class TestSort {

//自定义成员方法实现冒泡排序算法
public static void bubble(int[] arr){
    //1.使用外层for循环用于控制比较的轮数
    for(int i = 1; i < arr.length; i++){
        //声明boolean类型的变量作为本轮是否发生交换的标志位
        boolean flag = true;
        //2.使用内层for循环用于控制每轮中比较的次数
        for(int j = 0; j < arr.length-i; j++){
            //3.若第一个元素比第二个元素大,则交换两个元素的位置
            if(arr[j] > arr[j+1]){
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
                flag = false;
            }
        }
        //若代码执行到这个位置后flag的数值还是true,则证明本轮比较没有发生交换
        if(flag){
            break; //省略剩下的比较轮数
        }
    }
}

//自定义成员方法实现快速排序算法
public static void quick(int[] arr, int left, int right){
    //1.计算中间元素的下标并使用变量记录
    int p = (left+right) / 2;
    //2.选择中间元素作为基准值并单独保存起来
    int pivot = arr[p];
    //3.分别使用左右两边的元素依次与基准值比较大小,将所有小于基准值的元素放在左边,
    //  将所有大于等于基准值的元素放在基准值的右边
    //给左右两边的元素下标指定替身,为了递归方便
    int i = left;
    int j = right;
    for( ; i < j; ){
        //若左边有元素并且左边的元素小于基准值,则使用下一个元素与基准值比较
        while(i < p && arr[i] < pivot){
            i++;
        }
        //直到左边有元素但左边的元素不再小于基准值时,则将左边的元素赋值给p指向的
        //位置,p指向该元素原来的位置
        if(i < p){
            arr[p] = arr[i];
            p = i;
        }
        //若右边有元素并且右边的元素大于等于基准值,则使用下一个元素与基准值比较
        while(p < j && arr[j] >= pivot){
            j--;
        }
        //直到右边有元素但右边的元素不再大于等于基准值时,则将右边的元素赋值到p指向
        //的位置,p指向该元素原来的位置
        if(p < j){
            arr[p] = arr[j];
            p = j;
        }
    }
    //4.直到左右两边的元素下标重合时,将基准值放到重合的位置
    arr[p] = pivot;
    //5.分别对左右两边的分组进行再次分组,使用递归的思想
    //左右两边的分组分别至少有2个元素才需要递归
    if(p - left > 1){
        quick(arr, left, p-1);
    }
    if(right - p > 1){
        quick(arr, p+1, right);
    }
}

public static void main(String[] args) {

    int[] arr = {20, 8, 25, 3, 15, 20, 12, 18, 10};
    //调用排序算法进行排序
    // TestSort.bubble(arr);
    TestSort.quick(arr, 0, arr.length-1);
    Arrays.sort(arr);
    //打印排序后的结果
    System.out.print("排序后的结果是:");
    for(int i : arr){
        System.out.print(i + " ");
    }
    System.out.println();
}

}


 上一篇
Jdbc连接数据库方法及代码! Jdbc连接数据库方法及代码!
eclipse连数据库导入jar包: 需要下载个jdbc的jar包,将jdbc6.jar的包复制到文件的包下,此时再右键此包,选取bulid path将包加入到项目中去,然后就按下面的连接代码即可 Idea连接数据库导入jar包;Orac
2019-10-31
下一篇 
IDEA加序列化 IDEA加序列化
首先找到settings>>Editor>>inspections>> 搜索Serialization issues>>找到序列化id,然后OK。 点击对应的类,然后ALT+Ent
2019-10-29
  目录