插入排序及二分法查找

简介: 插入排序及二分法查找
/*1.从第一个元素开始,该元素可以认为已经被排序;
2.取出下一个元素,在已经排序的元素序列中从后向前扫描;
3.如果该元素(已排序)大于新元素,将该元素移到下一位置;
4.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
5.将新元素插入到该位置后;
6.重复步骤2~5。
 */
public class test4 {
    public static void main(String[] args) {
        Random random=new Random();
        int t=0;
        int j=0;
        int a[]={2,44,5,48,75,98,51,16,54,10};
        for (int i = 0; i <a.length-1; i++) {
             j=i;
             t=a[i+1];
             while(a[j]>t&&j>=0){
                    a[j+1]=a[j];
                    j--;
             }
             a[j+1]=t;
             }
        System.out.println(Arrays.toString(a));
        System.out.println(search(16,a ));
        }
/*1.确定查找范围front=0,end=N-1,计算中项mid=(front+end)/2。
2.若a[mid]=x或front>=end,则结束查找;否则,向下继续。
3.若a[mid]<x,说明待查找的元素值只可能在比中项元素大的范围内,则把mid+1的值赋给front,并重新计算mid,转去执行步骤2;若a[mid]>x,说明待查找的元素值只可能在比中项元素小的范围内,则把mid-1的值赋给end,并重新计算mid,转去执行步骤2。
*/
    public static int search(int num,int a[]) {
        int low=0;
        int high=a.length-1;
        int notfind=-1;
        while(low<=high){
            int middle = low + (high - low) / 2;
        if(a[middle]>num){
          high=middle-1;
        }else if(a[middle]<num){
           low=middle+1;
        }
        else{
            return middle;
        }
        }
        return notfind;
    }
}
相关文章
|
人工智能
冒泡排序+二分法查找
1 #include 2 3 void bubble(int *arr, int length) 4 { 5 int i, j, tmp; 6 for(i=0;i
816 0
|
人工智能 算法 搜索推荐
数组快速排序及二分法查找
数组快速排序及二分法查找
117 0
|
算法
插入排序和二分法(下)
插入排序和二分法(下)
184 0
插入排序和二分法(下)
|
存储 搜索推荐 算法
插入排序:简单而有效的排序方法
在计算机科学中,排序算法是一个重要且常见的主题,它们用于对数据进行有序排列。插入排序(Insertion Sort)是其中一个简单但有效的排序算法。本文将详细解释插入排序的原理和步骤,并提供Java语言的实现示例。
401 4
|
算法 人工智能 机器学习/深度学习
二分法查找(折半查找)
二分法查找(折半查找)
95 0
|
算法
插入排序之直接插入排序
一、基本思想: 依次将每个记录(无序表)插入到一个已排好序的有序表中,得到一个新的,记录增加1的有序表;
|
移动开发 自然语言处理 算法
排序——归并排序 & 基数排序
排序——归并排序 & 基数排序
176 0
排序——归并排序 & 基数排序
|
算法
排序——折半(二分)插入排序
排序——折半(二分)插入排序
170 0
排序——折半(二分)插入排序

热门文章

最新文章