排序/查找算法Java

插入排序:
适用于部分数据已经是有序的情况.
有点:
1. 实现简单
2. 数据量较小时效率高
void Insertion(intA[], int n){
    int i,j,v;
    for(i=2; i<=n-1; i++){
        v = A[i];
        j = i;
        while(A[] > v && j>= 1){
            A[j] = A[j-1];
            j--;
        }
        A[j] = v;
    }
}


冒泡排序
void BubbleSort(int A[], int n){
    for(int pass = n-1; pass >= 0; pass--){
        for(int i = 0; i < pass -1; i++){
            if(A[i] > A[i+1]){
                //交换元素
                int temp = A[i];
                A[i] = A[i+1];
                A[i+1] = temp;
            }
        }
    }


}

选择排序: 适用于小文件, 是一种原地排序算法(in-place)
void selection(int A[], int n){
    int i, j , min, temp;
    for(i = 0; i < n-1; i++){
        min = i;
        for(j = i+1; j < n; j++){
            if( A[j] < A(min) )
            min = j;
        }
        //交换元素
        temp = A[min];
        A[min] = A[i];
        A[i] = temp;
    }
}

快速排序: //TODO

=====二分法查找===========================
//1. 迭代二分法查找
int binarySearchIterative(int A[], int n, int data){
    int low = 0, high = n-1;
    while(low <= high){
        mid = low + (high-low)/2; //避免溢出
        if(A[mid] == data){
            return data
        }
        else if(A[mid] < data){
            low = mid +1;
        }
        else high = mid -1;
    }
    return -1;
}

// 2. 递归二分法查找
int binarySearchRecursive(int A[], int low, int high, int data){
    mid = low + (high-low)/2; //避免溢出
    if(A[mid] == data){
        return mid;
    }
    else if(A[mid] < data){
        return binarySearchRecursive(A, mid+1, high, data);
    }
    else{
        return binarySearchRecursive(A, mid-1, high, data);
    } 
    return -1;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值